如何用双引号比较bash变量

Mir*_*age 2 linux bash ubuntu

我有这个代码

STATUS=`echo "test"`


if [ $STATUS == "test" ]; then
   exit 0
fi
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一切,但我无法做到这一点。

我试过

"$STATUS" == "test"
eval $STATUS == "test"
${STATUS[@]} == "test"
Run Code Online (Sandbox Code Playgroud)

唯一有效的是

$STATUS == \"test\"
Run Code Online (Sandbox Code Playgroud)

Kus*_*nda 5

问题中的代码有效,这意味着它将执行该exit 0语句。

您的

STATUS=`echo "test"`
Run Code Online (Sandbox Code Playgroud)

是相同的

STATUS="test"
Run Code Online (Sandbox Code Playgroud)

和(在这种情况下)作为

STATUS=test
Run Code Online (Sandbox Code Playgroud)

即变量STATUS被赋值test为值(值中没有双引号)。

要针对该值进行测试test,请执行

if [ "$STATUS" = "test" ]
Run Code Online (Sandbox Code Playgroud)

或者

if [[ $STATUS == "test" ]]
Run Code Online (Sandbox Code Playgroud)

如果STATUS具有值"test",如

STATUS='"test"'
Run Code Online (Sandbox Code Playgroud)

然后在比较中使用该字符串:

if [ "$STATUS" = '"test"' ]
Run Code Online (Sandbox Code Playgroud)

或者

if [[ $STATUS == '"test"' ]]
Run Code Online (Sandbox Code Playgroud)

也可以看看: