我试图写一个脚本,将检查两个错误标志,如果一个标志(或两个)被改变,它将回显-错误发生。我的脚本:
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 (and)和-o (or)操作。
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
使用-a (and)和-o (or)操作。
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