gpt4 book ai didi

具有多个条件的 Bash if 语句抛出错误

转载 作者:行者123 更新时间:2023-11-29 08:38:16 27 4
gpt4 key购买 nike

我正在尝试编写一个脚本来检查两个错误标志,如果一个标志(或两个)被更改,它会回显——发生错误。我的脚本:

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com