2013-10-13 47 views
2

有一天,我在if語句中掙扎。打開我們的變量在開始時有一個空白區域。所以我試圖用下面的代碼來征服這個,但我沒有運氣。Bash if變量中帶空格的語句

if [ "$COMMAND_WAIT" == "*REBOOT" ]; then 
sudo /etc/kca/scripts/reboot.sh 
echo "REBOOTING" 
fi 

我應該能夠通配符此聲明或有其他解決方法嗎?

回答

4

以下應該工作。它使用[[而不是[,並且模式附近沒有引號。

if [[ "$COMMAND_WAIT" == *REBOOT ]]; then 
    sudo /etc/kca/scripts/reboot.sh 
    echo "REBOOTING" 
fi 

[[ expression ]]是化合物表達式中,用特殊的規則有關的擴展和引用。相反,[是內置命令,即*REBOOT將被擴展爲路徑名。在大多數情況下,使用[[代替[更容易。

+0

多數民衆贊成在很好,完美的作品使用[[〜]] –