我正在尝试编写一个脚本来检查两个错误标志,如果一个标志(或两个)被更改,它会回显——发生错误。我的脚本:
my_error_flag=0
my_error_flag_o=0
do something.....
if [[ "$my_error_flag"=="1" || "$my_error_flag_o"=="2" ] || [ "$my_error_flag"="1" && "$my_error_flag_o"="2" ]]; then
echo "$my_error_flag"
else
echo "no flag"
fi
基本上,它应该是:
if ((a=1 or b=2) or (a=1 and b=2))
then
display error
else
no error
fi
我得到的错误是:
line 26: conditional binary operator expected
line 26: syntax error near `]'
line 26: `if [[ "$my_error_flag"=="1" || "$my_error_flag_o"=="2" ] || [ "$my_error_flag"="1" && "$my_error_flag_o"="2" ]]; then'
我的括号弄乱了吗?
最佳答案
使用-a
(用于和)和-o
(用于或)操作。
tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
更新
实际上,您仍然可以将 &&
和 ||
与 -eq
操作一起使用。所以你的脚本应该是这样的:
my_error_flag=1
my_error_flag_o=1
if [ $my_error_flag -eq 1 ] || [ $my_error_flag_o -eq 2 ] || ([ $my_error_flag -eq 1 ] && [ $my_error_flag_o -eq 2 ]); then
echo "$my_error_flag"
else
echo "no flag"
fi
虽然在你的情况下你可以丢弃最后两个表达式并坚持使用一个或这样的操作:
my_error_flag=1
my_error_flag_o=1
if [ $my_error_flag -eq 1 ] || [ $my_error_flag_o -eq 2 ]; then
echo "$my_error_flag"
else
echo "no flag"
fi
关于具有多个条件的 Bash if 语句抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16203088/