Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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语句中shell中的两个布尔变量_Bash_If Statement_Syntax Error - Fatal编程技术网

Bash 如何比较If语句中shell中的两个布尔变量

Bash 如何比较If语句中shell中的两个布尔变量,bash,if-statement,syntax-error,Bash,If Statement,Syntax Error,这是一个场景: # Initialization var1=true var2=true # # # var1=false var2=false # # if [[var1==false && var2==false]] then echo "Both vars are false" fi 无论var1和var2中的值是什么,程序都会输入if语句。如何修复它?对于“[[]”条件表达式,表达式的元素需要作为单独的标记输入,用空格分隔。此外,变量需

这是一个场景:

# Initialization 
var1=true
var2=true

#
#
#
var1=false
var2=false 
#
#

if [[var1==false && var2==false]]
then
   echo "Both vars are false"
fi

无论var1和var2中的值是什么,程序都会输入if语句。如何修复它?

对于“[[]”条件表达式,表达式的元素需要作为单独的标记输入,用空格分隔。此外,变量需要以“$”作为前缀。可以通过在引用变量时添加“$”,并用空格分隔“[['.]]”和“==”来修复该条件

if [[ $var1 == false && $var2 == false ]]
then
   echo "Both vars are false"
fi

我无法复制此内容。相反,我得到的是
bash:[[var1==false:command not found
,而且它没有输入if语句。请在问题中指定错误消息(无注释)。没有错误消息。无论var1和var2包含什么,true true、true false、false true或false false,它都会输入If块。这是不应该发生的。不用麻烦使用文本比较。有文字命令,
true
false
,因此您可以说
如果$var1和$var2;那么
,这将是转换为
如果为true&&true;那么
..(或者如果
varX=false
您将获得适当的行为)。祝您好运。您需要在现有代码中使用
$var1
,还是
[…]
(…)一样工作
哪里不需要
$
呢?谢谢。你说得对,我漏掉了几个空格