字符串比较
题目:字符串比较
运行以下命令:
# str1="hello world"
# [ $str1 = "hello world" ] && echo 1 || echo 0
原来以为会输出1,结果却输出0,请问什么原因?
运行以下命令:
# str2="jerry"
# [ $str2=="tom" ] && echo 1 || echo 0
原来以为会输出0,结果却输出1,请问什么原因?
答案:
- 对于字符串测试的时候,一般应该将字符串变量加双引号之后再进行比较,否则如果字符串中含有空格等字符则会出现语法错误。所以该题应该这样写:
# str1="hello world"
# [ "$str1" = "hello world" ] && echo 1 || echo 0
# 1
- 字符串测试,可以使用
=
、==
或!=
来比较两个字符串相同或不同,但应注意比较符号两端一定要加空格,否则判断会出现逻辑错误——即使语法没问题,但判断结果依然可能不正确。所以该题应该这样写:
# str2="jerry"
# [ $str2 == "tom" ] && echo 1 || echo 0
# 0