我遗漏了关于bash的if构造/运算符或字符串比较的基本内容.请考虑以下脚本:
#!/bin/bash
baseSystem="testdir1"
testme="NA"
if [ "$baseSystem"=="$testme" ]; then
echo "In error case"
fi
if [ "$baseSystem"!="$testme" ]; then
echo "In error case"
fi
Run Code Online (Sandbox Code Playgroud)
我明白了:
In error case
In error case
Run Code Online (Sandbox Code Playgroud)
所以它进入每个案例,即使它们应该是互相排斥的.任何帮助表示赞赏.
bash 碰巧对空间有点特别.
在运算符周围添加空格:
if [ "$baseSystem" == "$testme" ]; then
...
if [ "$baseSystem" != "$testme" ]; then
Run Code Online (Sandbox Code Playgroud)
以下不相同:
[ "$a"="$b" ]
[ "$a" = "$b" ]
Run Code Online (Sandbox Code Playgroud)
你的第一次测试与说if [ "testdir1==NA" ]; then永远是真的完全相同.