- 浏览: 4733566 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
bzhao:
你也应该可以这样:(not tested)./rbtunnel ...
在Bash脚本中怎么关闭文件描述符? -
bzhao:
如果有A进程原代码情况下,通过如下调用,把他的子进程继承关闭则 ...
在Bash脚本中怎么关闭文件描述符? -
Master-Gao:
楼主咋没分析下源码呢?
我使用过的Linux命令之dirname - 截取给定路径的目录部分 -
jiedushi:
tail -F 就可以吧
Linux下实时跟踪log4j日志文件的bash脚本 - 增强了tail -f的功能 -
java_is_new:
新手学习了,就是不明白为一个网卡配多个ip有什么用
我使用过的Linux命令之ifconfig - 网络配置命令
Bash字符串处理(与Java对照) - 22.判断字符串是否数字串
In Java
用正则表达式匹配方式判断字符串是否数字串
String str = "1234";
if (str.matches("\\d+")) {
// matched, it's digit string
}
In Bash
使用模式匹配(Pattern Matching)判断字符串是否数字串
方法:[[ $STR != *[!0-9]* ]]
解读:$STR != *[!0-9]* 表示不匹配非数字串,反过来讲就是只匹配数字串。
方法:[[ ! $STR == *[!0-9]* ]]
解读:$STR == *[!0-9]* 表示只要包含非数字字符就为真,前面加上!操作符,表示相反,也就是说只有当全部是数字字符时才为真。
When the == and != operators are used, the string to the right
of the operator is considered a pattern and matched according to
the rules described below under Pattern Matching. The return
value is 0 if the string matches or does not match the pattern,
respectively, and 1 otherwise. Any part of the pattern may be
quoted to force it to be matched as a string.
[root@smsgw root]# STR=12345
[root@smsgw root]# [[ $STR != *[!0-9]* ]] && echo "yes"
yes
[root@smsgw root]# [[ ! $STR == *[!0-9]* ]] && echo "yes"
yes
[root@smsgw root]# STR=12345a
[root@smsgw root]# [[ $STR != *[!0-9]* ]] && echo "yes"
[root@smsgw root]# [[ ! $STR == *[!0-9]* ]] && echo "yes"
[root@smsgw root]# STR=abcd
[root@smsgw root]# [[ $STR != *[!0-9]* ]] && echo "yes"
[root@smsgw root]# [[ ! $STR == *[!0-9]* ]] && echo "yes"
[root@smsgw root]#
使用正则表达式匹配判断字符串是否数字串(Bash 3.0)
格式:[[ $STR =~ ^[0-9]+$ ]]
格式:[[ $STR =~ ^[[:digit:]]+$ ]]
An additional binary operator, =~, is available, with the same precedence as == and !=. When it is
used, the string to the right of the operator is considered an extended regular expression and matched
accordingly (as in regex(3)). The return value is 0 if the string matches the pattern, and 1 otherwise.
If the regular expression is syntactically incorrect, the conditional expression’s return value is 2.
[root@jfht ~]# STR=12345
[root@jfht ~]# [[ $STR =~ ^[0-9]+$ ]] && echo "yes"
yes
[root@jfht ~]# [[ $STR =~ ^[[:digit:]]+$ ]] && echo "yes"
yes
[root@jfht ~]# STR=12345a
[root@jfht ~]# [[ $STR =~ ^[0-9]+$ ]] && echo "yes"
[root@jfht ~]# [[ $STR =~ ^[[:digit:]]+$ ]] && echo "yes"
[root@jfht ~]# STR=abcd
[root@jfht ~]# [[ $STR =~ ^[0-9]+$ ]] && echo "yes"
[root@jfht ~]# [[ $STR =~ ^[[:digit:]]+$ ]] && echo "yes"
[root@jfht ~]#
注意:Bash 3.0 以上才支持,下面是在 Bash 2.0 下执行的结果。
[root@smsgw root]# STR=12345
[root@smsgw root]# [[ $STR =~ ^[0-9]+$ ]] && echo "yes"
-bash: conditional binary operator expected
-bash: syntax error near `=~'
[root@smsgw root]#
使用sed -n /re/p 来判断字符串是否数字串
格式:[ "$(sed -n "/^[0-9]\+$/p" <<< "$STR")" ]
格式:[ "$(echo "$STR" | sed -n "/^[0-9]\+$/p")" ]
suppress automatic printing of pattern space
/regexp/
Match lines matching the regular expression regexp.
p Print the current pattern space.
[root@jfht ~]# STR=12345
[root@jfht ~]# [ "$(sed -n "/^[0-9]\+$/p" <<< "$STR")" ] && echo "yes"
yes
[root@jfht ~]# [ "$(echo "$STR" | sed -n "/^[0-9]\+$/p")" ] && echo "yes"
yes
[root@jfht ~]# STR=12345a
[root@jfht ~]# [ "$(sed -n "/^[0-9]\+$/p" <<< "$STR")" ] && echo "yes"
[root@jfht ~]# [ "$(echo "$STR" | sed -n "/^[0-9]\+$/p")" ] && echo "yes"
[root@jfht ~]# STR=abcd
[root@jfht ~]# [ "$(sed -n "/^[0-9]\+$/p" <<< "$STR")" ] && echo "yes"
[root@jfht ~]# [ "$(echo "$STR" | sed -n "/^[0-9]\+$/p")" ] && echo "yes"
[root@jfht ~]#
使用 grep/egrep 来判断字符串是否数字串
格式:grep -q "^[0-9]\+$" <<< "$STR"
格式:egrep -q "^[0-9]+$" <<< "$STR"
-E, --extended-regexp
Interpret PATTERN as an extended regular expression (see below).
-e PATTERN, --regexp=PATTERN
Use PATTERN as the pattern; useful to protect patterns beginning with -.
-q, --quiet, --silent
Quiet; do not write anything to standard output. Exit immediately with zero status if any match is
found, even if an error was detected. Also see the -s or --no-messages option.
[root@jfht ~]# STR=123456
[root@jfht ~]# egrep "^[0-9]+$" <<< "$STR"
123456
[root@jfht ~]# grep "^[0-9]\+$" <<< "$STR"
123456
[root@jfht ~]#
本文链接:http://codingstandards.iteye.com/blog/1212725 (转载请注明出处)
返回目录:Java程序员的Bash实用指南系列之字符串处理(目录)
上节内容:Bash字符串处理(与Java对照) - 21.字符串正则匹配
下节内容:Bash字符串处理(与Java对照) - 23.字符串替换、子串删除、子串截取
发表评论
-
Bash字符串处理(与Java对照) - 21.字符串正则匹配
2011-10-24 09:07 11010Bash字符串处理(与Java对照) - 21.字符串正则匹配 ... -
Bash字符串处理(与Java对照) - 20.查找子串的位置
2011-10-19 09:14 6735Bash字符串处理(与Java对照) - 20.查找子串的位置 ... -
Bash字符串处理(与Java对照) - 19.查找字符的位置
2011-10-18 09:06 5902Bash字符串处理(与Java对照) - 19.查找字符的位置 ... -
Bash字符串处理(与Java对照) - 18.格式化字符串
2011-10-17 09:18 4928Bash字符串处理(与Java对照) - 18.格式化字符串 ... -
Bash字符串处理(与Java对照) - 17.判断是否以另外的字符串结尾
2011-10-09 08:58 6930Bash字符串处理(与Java对照) - 17.判断是否以另外 ... -
Bash字符串处理(与Java对照) - 16.判断是否以另外的字符串开头
2011-10-08 09:17 8301Bash字符串处理(与Java对照) - 16.判断是否以另外 ... -
Bash字符串处理(与Java对照) - 15.计算子串出现的次数
2011-09-28 09:37 3369Bash字符串处理(与Java对照) - 15.计算子串出现的 ... -
Bash字符串处理(与Java对照) - 14.判断是否包含另外的字符串(多达6种方法)
2011-09-27 13:22 8269Bash字符串处理(与Java对照) - 14.判断是否包含另 ... -
Bash字符串处理(与Java对照) - 13.字符串数组连接(以指定分隔符合并)
2011-09-26 09:19 5119Bash字符串处理(与Java对照) - 13.字符串数组连接 ... -
Bash字符串处理(与Java对照) - 12.字符串连接
2011-09-23 09:08 6315Bash字符串处理(与Java对照) - 12.字符串连接 ... -
Bash字符串处理(与Java对照) - 11.比较两个字符串大小(字典顺序、数值比较)
2011-09-21 09:31 5647Bash字符串处理(与Java对照) - 11.比较两个字符串 ... -
Bash字符串处理(与Java对照) - 10.判断两个字符串是否相等(不等)
2011-09-20 09:16 6844Bash字符串处理(与Java对照) - 10.判断两个字符串 ... -
Bash字符串处理(与Java对照) - 9.获取字符串指定位置的字符、遍历字符串中的字符
2011-09-19 09:13 3692Bash字符串处理(与Java对照) - 9.获取字符串指定位 ... -
Bash字符串处理(与Java对照) - 8.计算字符串长度
2011-09-16 09:20 5595Bash字符串处理(与Java对照) - 8.计算字符串长度 ... -
Bash字符串处理(与Java对照) - 7.字符串与默认值
2011-09-15 09:20 3895Bash字符串处理(与Java对照) - 7.字符串与默认值 ... -
Bash字符串处理(与Java对照) - 6.判断字符串是否为空(不为空)
2011-09-14 09:20 7158Bash字符串处理(与Java对照) - 6.判断字符串是否为 ... -
Bash字符串处理(与Java对照) - 5.字符串输入(读取字符串)
2011-09-13 09:28 3886Bash字符串处理(与Java对照) - 5.字符串输入(读取 ... -
Bash字符串处理(与Java对照) - 4.字符串输出
2011-09-08 09:30 3699Bash字符串处理(与Java对照) - 4.字符串输出 I ... -
Bash字符串处理(与Java对照) - 3.给(字符串)变量赋值
2011-09-07 09:29 6838Bash字符串处理(与Java ... -
Bash字符串处理(与Java对照) - 2.字符串的表示方式(字符串常量)
2011-09-06 09:18 6082Bash字符串处理(与Java ...
相关推荐
bash-3.1-MSYS-1.0.11-snapshot.tar.bz2 ffmpeg 安装用包!
在centos6或rhel6 操作系统安装bash-completion-2.1-6.el7.noarch.rpm后,重启即生效
离线安装包,测试可用
libguestfs-bash-completion-1.40.2-28.module_el8.5.0+821+97472045.noarch(1).rpm官方离线安装包,亲测可用
git-bash.exe
-bash: /usr/local/jdk/jdk1.8.0_181/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 安装完后 java -version 查看版本出现: 原因是:没有那个文件或目录,找了很久发现需要...
openjdk-18.0.1.1(openjdk-18.0.1.1_linux-x64_bin.tar.gz)适用于Linux x64 系统:
修改redhat 7 bash远程执行任意代码漏洞
bash-4.1.2-9.el6_2.i686.rpm是centos工具类。
2. 检查包是否安装上 rpm -qa rlwrap 3. 修改配置文件 vi .bash_profile 增加:alias sqlplus='rlwrap sqlplus' alias rman='rlwrap rman' alias lsnrctl='rlwrap lsnrctl' 4. 生效: source .bash_profile
redhat bash漏洞补丁包含文件:bash-4.1.2-15.el6_5.2.i686.rpmbash-4.1.2-15.el6_5.2.x86_64.rpmbash-3.0-27.el4.i386.rpmbash-3.0-27.el4.x86_64.rpmbash-3.2-33.el5_11.4.i386.r... redhat bash漏洞补丁 包含文件...
修复redhat6 bash远程执行任意代码漏洞CVE-2014-6271
命令补全 Centos6/7或Rhel6/7 安装 bash-completion-2.1-6.el7.noarch.rpm 后重启即生效
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
网上有很多bash补丁下载,但都是x86_64架构的,针对i686的下载很少,bash-4.1.2-15.el6_5.2.src.rpm 也很难下载,希望上传的这个bash-4.1.2-15.el6_5.2.i686.rpm对你有用。
linux 服务器GNU Bash小于版本4.3有操作系统命令注入漏洞,需要对bash升级,下载解压 #tar zxvf bash-4.4.tar.gz #cd bash-4.4 #./configure (如果centos7编译失败,请先安装#yum install gcc) #make #make ...
执行如下命令查看设备是否存在bash安全漏洞。 #env -i X='() { (a)=>\\' bash -c '/dev/stdout echo vulnerable' 2>/dev/null 判定依据 如果以上命令的输出为以下内容则不合规: vulnerable
离线安装包,亲测可用
.git-completion.bash