bash 包含 AND 逻辑运算符的 IF 子句不起作用
bash IF clause containing AND logic operator not working
我正在构建一个 bash 脚本,它在 IF 语句中有 2 个条件,由 AND 逻辑运算符链接,但它在执行时会报错。
仅作记录,如果我 运行 每个条件都是唯一的 IF,两者都可以正常工作。当我尝试执行由 -a (AND) 运算符粘附的两者时,出现了问题。这是:
if [[ "" =~ ".com" -a test "$#" -eq 1 ]]
then
echo "olalá"
fi
我将不胜感激有关此问题的任何提示。
-a
是 [ ]
测试表达式中的 AND 运算符,但 [[ ]]
条件表达式使用 &&
代替。此外,表达式中有一个杂散的 test
根本不属于那里。这是更正后的版本:
if [[ "" =~ ".com" && "$#" -eq 1 ]]
您可以等效地使用两个单独的 [[ ]]
表达式并在它们之间使用 &&
:
if [[ "" =~ ".com" ]] && [[ "$#" -eq 1 ]]
(如果您使用 [ ]
表达式,这将是首选方法,因为涉及 -a
、-o
等的语法含糊不清;但 [[ ]]
,没有歧义,任何一种方法都可以正常工作。)
我正在构建一个 bash 脚本,它在 IF 语句中有 2 个条件,由 AND 逻辑运算符链接,但它在执行时会报错。 仅作记录,如果我 运行 每个条件都是唯一的 IF,两者都可以正常工作。当我尝试执行由 -a (AND) 运算符粘附的两者时,出现了问题。这是:
if [[ "" =~ ".com" -a test "$#" -eq 1 ]]
then
echo "olalá"
fi
我将不胜感激有关此问题的任何提示。
-a
是 [ ]
测试表达式中的 AND 运算符,但 [[ ]]
条件表达式使用 &&
代替。此外,表达式中有一个杂散的 test
根本不属于那里。这是更正后的版本:
if [[ "" =~ ".com" && "$#" -eq 1 ]]
您可以等效地使用两个单独的 [[ ]]
表达式并在它们之间使用 &&
:
if [[ "" =~ ".com" ]] && [[ "$#" -eq 1 ]]
(如果您使用 [ ]
表达式,这将是首选方法,因为涉及 -a
、-o
等的语法含糊不清;但 [[ ]]
,没有歧义,任何一种方法都可以正常工作。)