在 Linux 寫 shell script,不需要需告變數,就可以直接使用
#!/bin/bash echo $FAV_COLOR |
在『/var/tmp/test1.sh』,並沒有定義(或宣告)FAV_COLOR變數,就直接使用,沒看到任何東西,但是,也沒有錯誤訊息!
加入 shopt -s -o nounset,要求必須要事先定義(或宣告)變數,才可以使用,此時就會出現錯誤訊息!
#!/bin/bash shopt -s -o nounset echo $FAV_COLOR |
在啟動『shopt -s -o nounset』功能,變數必須要先定義才可以使用!
#!/bin/bash shopt -s -o nounset FAV_COLOR=red |
這樣做有什麼好處呢?
如果不需告變數就可以直接使用變數(這是預設值),此時不小心打錯字,變數名稱打錯了…不會顯示錯誤訊息,因為,bash 以為要找 FAVVV_COLOR 變數(因為不宣告就可以使用),但,FAVVV_COLOR 的內容是空的
#!/bin/bash echo $FAVVV_COLOR |
如果需要定義(或宣告)變數才可以使用,加上打錯變數呢?會出現錯誤訊息,顯示未定義的變數
#!/bin/bash shopt -s -o nounset echo $FAVVV_COLOR |
意思是說,打錯變數,會顯示錯誤訊息,比較容易 debug!
shopt 是 shell option,man page 說明文件是『man shopt』,線上說明文件『http://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html#The-Shopt-Builtin』
單獨執行 shopt 不加參數,會列出 bash 目前的參數(option)
其他參考資料:
http://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html