Shell-Script
bash + 將變數與空格進行比較
我想在變數中列印firewall-cmd –state狀態 - $STAT
然後將變數 $STAT 與“未執行”字元串進行比較
但比較得到假,這是因為變數內的空格
請建議如何做 bash 定期到期
所以我將檢查變數中是否包含“未執行”,因此將通過 echo 列印“未執行”
# firewall-cmd --state not running STAT=` firewall-cmd --state ` echo $STAT not running [[ $STAT = "not running" ]] && echo "not running" no output
這工作得很好:
$ stat=$(echo "not running") $ [[ $stat = "not running" ]] && echo yes yes
但是,如果變數中有前導或尾隨空格,則它不起作用。但是您可以使用模式匹配或正則表達式匹配來覆蓋:
$ stat=$(echo " not running ") $ [[ $stat = *"not running"* ]] && echo yes yes $ [[ $stat =~ "not running" ]] && echo yes yes
not running
兩者都在變數中搜尋字元串。第一個中的星號明確說明了前導或尾隨字元。第二個是正則表達式匹配,預設情況下在字元串中的任何位置查找匹配項。要使用正則表達式顯式匹配前導或尾隨空格,最簡單的方法是將正則表達式放入變數中。
$pattern
必須在條件中不加引號。$ pattern="^ *not running *$" $ [[ $stat =~ $pattern ]] && echo yes yes
(我假設這裡只有可能的額外空格字元,而不是任意空格。)