https://blog.csdn.net/Michaelwubo/article/details/81698307
== 可用于判断变量是否相等,= 除了可用于判断变量是否相等外,还可以表示赋值。
= 与 == 在 [ ] 中表示判断(字符串比较)时是等价的,例如:
1 2 3 4 |
|
最后两个语句是等价的
在 (( )) 中 = 表示赋值, == 表示判断(整数比较),它们不等价,比如
1 2 3 |
|
((n=5)) 表示赋值,((n==5)) 表示判断。
-n : 字符串长度不等于 0 为真 . example : VAR1=1;VAR2=""[ -n "$VAR1" ]为 true[ -n "$VAR2" ]为 false .
-z : 字符串长度等于 0 为真 . example : VAR1=1;VAR2=""[ -z "$VAR1" ]为 false[ -z "$VAR2" ]为 true .
str : 字符串存在为真 . example : VAR1=1;VAR2=""[ $VAR1 ]为 true[ $VAR2 ]为 false .
需要注意的是,使用-z 或-n 判断字符串长度时,变量要加双引号。
举例说明:
# [ -z $a ] && echo yes || echo no
yes
# [ -n $a ] && echo yes || echo no
yes
# 加了双引号才能正常判断是否为空
# [ -z "$a" ] && echo yes || echo no
yes
# [ -n "$a" ] && echo yes || echo no
no
# 使用了双中括号就不用了双引号
# [[ -n $a ]] && echo yes || echo no
no
# [[ -z $a ]] && echo yes || echo no
yes
/ ----------------------second -----------part /
Linux shell if [ -n ] 正确使用方法
https://www.cnblogs.com/ariclee/p/6137456.html
if [ str1 = str2 ] 当两个串有相同内容、长度时为真
if [ str1 != str2 ] 当串str1和str2不等时为真
if [ -n str1 ] 当串的长度大于0时为真(串非空)
if [ -z str1 ] 当串的长度为0时为真(空串)
if [ str1 ] 当串str1为非空时为真
shell 中利用 -n 来判定字符串非空。
错误用法:
ARGS=$*
if [ -n $ARGS ]
then
print "with argument"
fi
print " without argument"
不管传不传参数,总会进入if里面。
原因:因为不加“”时该if语句等效于if [ -n ],shell 会把它当成if [ str1 ]来处理,-n自然不为空,所以为正。
正确用法:需要在$ARGS上加入双引号,即"$ARGS".
ARGS=$*
if [ -n "$ARGS" ]
then
print "with argument"
fi
print " without argument"