如何解决如果在bash shell脚本中使用逻辑运算符,如何比较内部的值
我有以下shell脚本代码:
if [ [ "$prevState" != "\"CANCELED\""] || ["$prevState" = "\"CANCELED\"" & "$1" = "YES" ] ]
其中prevstate的值为CANCELED,而$ 1的值为NO。但是在执行shell时,出现以下错误。
/dir/checks/Check.sh: 30: [: /dir/checks/Check.sh: 30: /dir/checks/Check.sh: missing ]NO: not found
如何使用逻辑AND和OR运算符在shell脚本中进行内部比较。在上述条件下所有变量都是字符串
解决方法
if
的构造是:
if some_command
then
# this is executed,if `some_command` returned with 0 exit status
some_other_command
fi
不是 。 if [ expression ]
[
是一个普通程序,可执行文件,等效于test
可执行文件。当确定程序[
中的表达式为真时,程序 [
以0退出状态退出。您可以将if /usr/bin/[ "a" = "b" ]
与if [ "a" = "b" ]
进行相同的操作。
使用&&
和||
,您可以“链接”不同的命令-它称为命令的 list 。列表中的退出状态是最后执行的命令的退出状态。 &&
在退出状态为0的左键返回时运行右命令。||
在退出状态不同于0的左键返回时在右侧运行命令。请注意,执行列表中的命令顺序-a || b && c
是(a || b) && c
,不是 。a || (b && c)
您可以尝试:
# if
# prevState is not \"CANCELED\" _including the quotes_
# or
# first argument is "YES"
# then
if [ "$prevState" != "\"CANCELED\"" ] || [ "$1" = "YES" ] ; then
blabla
fi
链接:bash manual list of commands,bash manual conditional constructs,posix test
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。