Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Bash中正确测试if语句中的值_Bash - Fatal编程技术网

在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"

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" = "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