shell腳本中變量一定要加雙引號


大多數時候,雖然可以不使用括起字符串和字符串變量的雙引號,但這並不是好主意。為什么呢?因為如果環境變量中恰巧有一個空格或制表鍵,bash 將無法分辨,從而無法正常工作。這里有一個錯誤的比較示例:

if [ $myvar = "foo bar oni" ]

then

     echo "yes"

fi

在上例中,如果 myvar 等於 "foo",則代碼將按預想工作,不進行打印。但是,如果 myvar 等於 "foo bar oni",則代碼將因以下錯誤失敗:

[: too many arguments

在這種情況下,"$myvar"(等於 "foo bar oni")中的空格迷惑了 bash。bash 擴展 "$myvar" 之后,代碼如下:

[ foo bar oni = "foo bar oni" ]

因為環境變量沒放在雙引號中,所以 bash 認為方括號中的自變量過多。可以用雙引號將字符串自變量括起來消除該問題。請記住,如果養成將所有字符串自變量用雙引號括起的習慣,將除去很多類似的編程錯誤。"foo bar oni" 比較 應該寫成:

if [ "$myvar" = "foo bar oni" ]

then

     echo "yes"

fi


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM