在Bash中正确测试if语句中的值
bash中if语句的正确测试是什么。我不确定第二个语句是赋值还是测试等价性在Bash中正确测试if语句中的值,bash,Bash,bash中if语句的正确测试是什么。我不确定第二个语句是赋值还是测试等价性 if [[ "$user_has_mfa" == "NO" ]]; then .... do stuff... fi 或 一个相等的就可以了 if [[ "$user_has_mfa" = "NO" ]]; then .. do stuff.. fi 你可以用 -eq for integers =, == for strings 一个相等的就可以了 if [[ "$user_has_mfa"
if [[ "$user_has_mfa" == "NO" ]]; then
.... do stuff...
fi
或
一个相等的就可以了
if [[ "$user_has_mfa" = "NO" ]]; then
.. do stuff..
fi
你可以用
-eq for integers
=, == for strings
一个相等的就可以了
if [[ "$user_has_mfa" = "NO" ]]; then
.. do stuff..
fi
你可以用
-eq for integers
=, == for strings
它们是等价的。从: 如果字符串相等,则为True。=应与POSIX一致性测试命令一起使用。当与[[命令]一起使用时,它将按照上述复合命令执行模式匹配
它们是等效的。从: 如果字符串相等,则为True。=应与POSIX一致性测试命令一起使用。当与[[命令]一起使用时,将按照上述复合命令执行模式匹配 =是条件表达式中字符串相等的标准运算符。在[…]命令中没有赋值运算符,因此=和bash的==运算符之间没有歧义;它们是等价的 For[,=是唯一的可移植运算符。==是bash允许的,但不是dash允许的。如果您关心可移植性,则只能接受[$user\u has\u mfa=NO] 在算术上下文中,=和==之间存在差异,因为允许赋值。=对于is赋值,而==对于is相等性测试。例如:
$ x=0 # shell assignment
$ ((x = 3)) # arithmetic assignment
$ if (( x == 3 )); then echo "x is 3"; fi
x is 3
当我指的是C程序员需要担心的==错误时,您也会受到相同类型的writed=的影响
$ x=3
$ if ((x=4)); then echo "x equals 4"; fi
x equals 4
$ echo $x
4
=是条件表达式中字符串相等的标准运算符。在[…]命令中没有赋值运算符,因此=和bash的==运算符之间没有歧义;它们是等价的
For[,=是唯一的可移植运算符。==是bash允许的,但不是dash允许的。如果您关心可移植性,则只能接受[$user\u has\u mfa=NO]
在算术上下文中,=和==之间存在差异,因为允许赋值。=对于is赋值,而==对于is相等性测试。例如:
$ x=0 # shell assignment
$ ((x = 3)) # arithmetic assignment
$ if (( x == 3 )); then echo "x is 3"; fi
x is 3
当我指的是C程序员需要担心的==错误时,您也会受到相同类型的writed=的影响
$ x=3
$ if ((x=4)); then echo "x equals 4"; fi
x equals 4
$ echo $x
4