shell脚本不适用于-z或与-z一起使用的条件
我的文件名为test2.sh 我正在使用./test2.sh执行文件shell脚本不适用于-z或与-z一起使用的条件,shell,Shell,我的文件名为test2.sh 我正在使用./test2.sh执行文件 #!/bin/bash a="1111" b="" if [ -z $b -o -z $a ] then echo "a or b is empty" else echo "a and b not empty" fi 它总是在输出中显示a和b不为空。 怎么了 如果我只使用[-z$b],那么它就工作了 我也尝试过[-z$b-o-a$b],然后它就开始工作了 同时使用-o-z有什么问题吗 如果我理解你的问题,你可以这样尝试:
#!/bin/bash
a="1111"
b=""
if [ -z $b -o -z $a ]
then
echo "a or b is empty"
else
echo "a and b not empty"
fi
它总是在输出中显示a和b不为空。
怎么了
如果我只使用[-z$b],那么它就工作了
我也尝试过[-z$b-o-a$b],然后它就开始工作了
同时使用-o-z有什么问题吗 如果我理解你的问题,你可以这样尝试:
#!/bin/bash
a="1111"
b=""
if [ -z "$b" ] || [ -z "$a" ]
then
echo "a or b is empty"
else
echo "a and b not empty"
fi
输出:
a=“1111”和b=”“=>a或b为空
a=”“和b=”“=>a或b为空
a=“”和b=“111”=>a或b为空
a=“11”和b=“22”=>a和b不是空的
我希望这会有所帮助如果我理解了你的问题,你可以这样尝试:
#!/bin/bash
a="1111"
b=""
if [ -z "$b" ] || [ -z "$a" ]
then
echo "a or b is empty"
else
echo "a and b not empty"
fi
输出:
a=“1111”和b=”“=>a或b为空
a=”“和b=”“=>a或b为空
a=“”和b=“111”=>a或b为空
a=“11”和b=“22”=>a和b不是空的
我希望这有帮助您也应该会遇到“参数太多”错误,因为如果不引用参数扩展,您的命令将变成[-z-o-z 1111]
。始终引用参数展开式。此外,切勿使用-o
;使用|
连接两个独立的测试
命令,如[-z]
所示,因为-z
是一个非空字符串。您还应该得到一个“参数太多”错误,因为如果不引用参数扩展,您的命令将变成[-z-o-z 1111]
。始终引用参数展开式。此外,切勿使用-o
;使用|
连接两个独立的测试
命令,如[-z]
所示,由于-z
是非空字符串,因此其本身始终为真。