在以下命令序列中,爲什麼第二個if
未計算爲真?字符串在Bash中看起來相同但不相等
[[email protected]:~]a="true"
[[email protected]:~]if [ "$a" = "true" ]; then echo "hi5"; fi
hi5
上面if
,正如所料,評價爲true
。但是......
[[email protected]:~]a=$(head -n 1 $CLUSTERS_CONF | grep secure= | sed 's/^.*secure=//' | sed 's/ .*$//')
[[email protected]:~]echo $a
true
[[email protected]:~]if [ "$a" = "true" ]; then echo "hi5"; fi
[[email protected]:~]
爲什麼這個if
不計算true
?
我甚至檢查,看看是否有$a
任何額外的非打印字符
[[email protected]:~]echo "'"$a"'"
'true'
我缺少什麼?基於這一觀察
將你的第二個'echo $ a'改爲'echo「$ a」XYZ「並查看你的尾部是否有空白'$ a'的值。祝你好運。 – shellter
將'set -x'添加到您的bash shell中,然後重新運行這些命令。 'set -x'顯示shell實際解釋的內容,是調試bash/ksh shell腳本的常用方法。 – tk421
運行'echo「$ a」| hexdump -C'讓我們看看你得到了什麼 – janos