- 浏览: 4733226 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
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对照) - 10.判断两个字符串是否相等(不等)
In Java
String.equals & String.equalsIgnoreCase
boolean equals(Object anObject)
比较此字符串与指定的对象。
boolean equalsIgnoreCase(String anotherString)
将此 String 与另一个 String 进行比较,不考虑大小写。
if (s1.equals(s2)) {
}
注意:一定要保证s1 != null,否则会抛出异常。
StringUtils.equals & StringUtils.equalsIgnoreCase
在Apache Commons Lang中的StringUtils类提供了equals和equalsIgnoreCase静态方法,它的好处是两个字符串都可以是null。
Compares two Strings, returning true if they are equal.
nulls are handled without exceptions. Two null references are considered to be equal. The comparison is case sensitive.
StringUtils.equals(null, null) = true
StringUtils.equals(null, "abc") = false
StringUtils.equals("abc", null) = false
StringUtils.equals("abc", "abc") = true
StringUtils.equals("abc", "ABC") = false
Parameters:
str1 - the first String, may be null
str2 - the second String, may be null
Returns:
true if the Strings are equal, case sensitive, or both null
Compares two Strings, returning true if they are equal ignoring the case.
nulls are handled without exceptions. Two null references are considered equal. Comparison is case insensitive.
StringUtils.equalsIgnoreCase(null, null) = true
StringUtils.equalsIgnoreCase(null, "abc") = false
StringUtils.equalsIgnoreCase("abc", null) = false
StringUtils.equalsIgnoreCase("abc", "abc") = true
StringUtils.equalsIgnoreCase("abc", "ABC") = true
Parameters:
str1 - the first String, may be null
str2 - the second String, may be null
Returns:
true if the Strings are equal, case insensitive, or both null
In Bash
判断字符串相等
格式1:test "$S1" = "$S2"
格式2:[ "$S1" = "$S2" ]
格式3:test "$S1" == "$S2"
格式4:[ "$S1" == "$S2" ]
格式5:[[ $S1 = $S2 ]]
格式6:[[ $S1 == $S2 ]]
在Bash中关于=和==的说法
True if the strings are equal. = may be used in place of == for strict POSIX compliance.
[root@web ~]# S1=Hello
[root@web ~]# S2=Hello
[root@web ~]# test "$S1" = "$S2" && echo "equals"
equals
[root@web ~]# [ "$S1" = "$S2" ] && echo "equals"
equals
[root@web ~]# test "$S1" == "$S2" && echo "equals"
equals
[root@web ~]# [ "$S1" == "$S2" ] && echo "equals"
equals
[root@web ~]# [[ "$S1" = "$S2" ]] && echo "equals"
equals
[root@web ~]# [[ "$S1" == "$S2" ]] && echo "equals"
equals
[root@web ~]#
[root@web ~]# S1=Hello
[root@web ~]# S2=hello
[root@web ~]# test "$S1" = "$S2" && echo "equals"
[root@web ~]# [ "$S1" = "$S2" ] && echo "equals"
[root@web ~]# test "$S1" == "$S2" && echo "equals"
[root@web ~]# [ "$S1" == "$S2" ] && echo "equals"
[root@web ~]# [[ "$S1" = "$S2" ]] && echo "equals"
[root@web ~]# [[ "$S1" == "$S2" ]] && echo "equals"
[root@web ~]#
判断字符串不相等
格式1:test "$S1" != "$S2"
格式2:[ "$S1" != "$S2" ]
格式3:[[ $S1 != $S2 ]]
注意在[[ ]]中,变量的引用可以不加双引号,这是与[ ]的不同之处。
也可以在判断字符串相等的基础上加上逻辑非(!)可以得到更多方法,比如:[ ! "$S1" == "$S2" ]
[root@web ~]# S1=Hello
[root@web ~]# S2=Hello
[root@web ~]# test "$S1" != "$S2" && echo "not equals"
[root@web ~]# [ "$S1" != "$S2" ] && echo "not equals"
[root@web ~]# [[ $S1 != $S2 ]] && echo "not equals"
[root@web ~]# S1=Hello
[root@web ~]# S2=hello
[root@web ~]# test "$S1" != "$S2" && echo "not equals"
not equals
[root@web ~]# [ "$S1" != "$S2" ] && echo "not equals"
not equals
[root@web ~]# [[ $S1 != $S2 ]] && echo "not equals"
not equals
[root@web ~]#
比较字符串是否相等,不区分大小写
采用shopt命令启用不区分大小写匹配模式,只在case语句和[[ ]]中有效。
Toggle the values of variables controlling optional shell behavior.
-s Enable (set) each optname.
-u Disable (unset) each optname.
nocasematch
If set, bash matches patterns in a case-insensitive fashion when performing matching while exe-
cuting case or [[ conditional commands.
[root@web ~]# shopt -s nocasematch
[root@web ~]# [ "$S1" = "$S2" ] && echo "equals ignore case"
[root@web ~]# [[ "$S1" = "$S2" ]] && echo "equals ignore case"
equals ignore case
[root@web ~]# case "$S1" in "$S2") echo "equals ignore case"; esac
equals ignore case
[root@web ~]# shopt -u nocasematch
[root@web ~]# [[ "$S1" = "$S2" ]] && echo "equals ignore case"
[root@web ~]# case "$S1" in "$S2") echo "equals ignore case"; esac
[root@web ~]#
包装成一个函数
equals_ignore_case(){ shopt -s nocasematch [[ $1 == $2 ]] local rc=$? shopt -u nocasematch return $rc }
[root@web ~]# equals_ignore_case "Hello" "hello" && echo "equals ignore case"
equals ignore case
[root@web ~]# equals_ignore_case "Hello" "Qello" && echo "equals ignore case"
[root@web ~]# equals_ignore_case "Hello" "hello" && echo "equals ignore case"
equals ignore case
[root@web ~]# equals_ignore_case "Hello" "helLo" && echo "equals ignore case"
equals ignore case
[root@web ~]#
如果其中一个字符串是常量,可以采用 [[ ]] 中 == 的模式匹配来进行。(不用shopt开启不区分大小写)
比如:[[ $S1 == [Hh][Ee][Ll][Ll][Oo] ]]
麻烦的地方就是后面那个匹配模式要每个字符提供大小写的形式。
[root@web ~]# S1=Hello
[root@web ~]# [[ $S1 == [Hh][Ee][Ll][Ll][Oo] ]] && echo "equals ignore case"
equals ignore case
[root@web ~]# S1=HeLlo
[root@web ~]# [[ $S1 == [Hh][Ee][Ll][Ll][Oo] ]] && echo "equals ignore case"
equals ignore case
[root@web ~]#
还可以采用case语法结构。
比如:case "$S1" in [Hh][Ee][Ll][Ll][Oo]) echo "equals ignore case";; esac
[root@web ~]# S1=hEllo
[root@web ~]# case "$S1" in [Hh][Ee][Ll][Ll][Oo]) echo "equals ignore case";; esac
equals ignore case
[root@web ~]# S1=hellO
[root@web ~]# case "$S1" in [Hh][Ee][Ll][Ll][Oo]) echo "equals ignore case";; esac
equals ignore case
[root@web ~]#
如果比较的双方都是变量,上面的技巧就无法做到了。
下面的方法是将两个字符串都变成大写的形式(使用tr命令),然后进行判断。
[ "$(echo "$S1" | tr [a-z] [A-Z])" == "$(echo "$S2" | tr [a-z] [A-Z])" ]
[root@web ~]# S1=Hello
[root@web ~]# S2=helLo
[root@web ~]# [ "$(echo "$S1" | tr [a-z] [A-Z])" == "$(echo "$S2" | tr [a-z] [A-Z])" ] && echo "equals ignore case"
equals ignore case
[root@web ~]#
本文链接:http://codingstandards.iteye.com/blog/1175608 (转载请注明出处)
返回目录:Java程序员的Bash实用指南系列之字符串处理(目录)
上节内容:Bash字符串处理(与Java对照) - 9.获取字符串指定位置的字符、遍历字符串中的字符
下节内容:Bash字符串处理(与Java对照) - 11.比较两个字符串大小(字典顺序、数值比较)
发表评论
-
Bash字符串处理(与Java对照) - 22.判断字符串是否数字串
2011-10-25 09:25 5423Bash字符串处理(与Java对照) - 22.判断字符串是否 ... -
Bash字符串处理(与Java对照) - 21.字符串正则匹配
2011-10-24 09:07 11005Bash字符串处理(与Java对照) - 21.字符串正则匹配 ... -
Bash字符串处理(与Java对照) - 20.查找子串的位置
2011-10-19 09:14 6734Bash字符串处理(与Java对照) - 20.查找子串的位置 ... -
Bash字符串处理(与Java对照) - 19.查找字符的位置
2011-10-18 09:06 5900Bash字符串处理(与Java对照) - 19.查找字符的位置 ... -
Bash字符串处理(与Java对照) - 18.格式化字符串
2011-10-17 09:18 4926Bash字符串处理(与Java对照) - 18.格式化字符串 ... -
Bash字符串处理(与Java对照) - 17.判断是否以另外的字符串结尾
2011-10-09 08:58 6929Bash字符串处理(与Java对照) - 17.判断是否以另外 ... -
Bash字符串处理(与Java对照) - 16.判断是否以另外的字符串开头
2011-10-08 09:17 8300Bash字符串处理(与Java对照) - 16.判断是否以另外 ... -
Bash字符串处理(与Java对照) - 15.计算子串出现的次数
2011-09-28 09:37 3367Bash字符串处理(与Java对照) - 15.计算子串出现的 ... -
Bash字符串处理(与Java对照) - 14.判断是否包含另外的字符串(多达6种方法)
2011-09-27 13:22 8268Bash字符串处理(与Java对照) - 14.判断是否包含另 ... -
Bash字符串处理(与Java对照) - 13.字符串数组连接(以指定分隔符合并)
2011-09-26 09:19 5117Bash字符串处理(与Java对照) - 13.字符串数组连接 ... -
Bash字符串处理(与Java对照) - 12.字符串连接
2011-09-23 09:08 6314Bash字符串处理(与Java对照) - 12.字符串连接 ... -
Bash字符串处理(与Java对照) - 11.比较两个字符串大小(字典顺序、数值比较)
2011-09-21 09:31 5646Bash字符串处理(与Java对照) - 11.比较两个字符串 ... -
Bash字符串处理(与Java对照) - 9.获取字符串指定位置的字符、遍历字符串中的字符
2011-09-19 09:13 3692Bash字符串处理(与Java对照) - 9.获取字符串指定位 ... -
Bash字符串处理(与Java对照) - 8.计算字符串长度
2011-09-16 09:20 5593Bash字符串处理(与Java对照) - 8.计算字符串长度 ... -
Bash字符串处理(与Java对照) - 7.字符串与默认值
2011-09-15 09:20 3893Bash字符串处理(与Java对照) - 7.字符串与默认值 ... -
Bash字符串处理(与Java对照) - 6.判断字符串是否为空(不为空)
2011-09-14 09:20 7155Bash字符串处理(与Java对照) - 6.判断字符串是否为 ... -
Bash字符串处理(与Java对照) - 5.字符串输入(读取字符串)
2011-09-13 09:28 3884Bash字符串处理(与Java对照) - 5.字符串输入(读取 ... -
Bash字符串处理(与Java对照) - 4.字符串输出
2011-09-08 09:30 3698Bash字符串处理(与Java对照) - 4.字符串输出 I ... -
Bash字符串处理(与Java对照) - 3.给(字符串)变量赋值
2011-09-07 09:29 6836Bash字符串处理(与Java ... -
Bash字符串处理(与Java对照) - 2.字符串的表示方式(字符串常量)
2011-09-06 09:18 6079Bash字符串处理(与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 系统:
bash-4.1.2-9.el6_2.i686.rpm是centos工具类。
离线安装包,亲测可用
修改redhat 7 bash远程执行任意代码漏洞
2. 检查包是否安装上 rpm -qa rlwrap 3. 修改配置文件 vi .bash_profile 增加:alias sqlplus='rlwrap sqlplus' alias rman='rlwrap rman' alias lsnrctl='rlwrap lsnrctl' 4. 生效: source .bash_profile
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远程执行漏洞,支持redhat linux 64位操作系统 CVE-2014-6271
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漏洞补丁 包含文件...
aix 操作系统bash工具bash-3.2-2.aix6.1.ppc.rpm,aix 5及6、7均支持
修复redhat6 bash远程执行任意代码漏洞CVE-2014-6271
命令补全 Centos6/7或Rhel6/7 安装 bash-completion-2.1-6.el7.noarch.rpm 后重启即生效
AIX-6系统的bash-5安装包
官方离线安装包,亲测可用。使用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对你有用。