在 shell script 內宣告變數

在 Linux 寫 shell script,不需要需告變數,就可以直接使用

#!/bin/bash

echo $FAV_COLOR

image

在『/var/tmp/test1.sh』,並沒有定義(或宣告)FAV_COLOR變數,就直接使用,沒看到任何東西,但是,也沒有錯誤訊息!

加入 shopt -s -o nounset,要求必須要事先定義(或宣告)變數,才可以使用,此時就會出現錯誤訊息!

#!/bin/bash

shopt -s -o nounset

echo $FAV_COLOR

image

在啟動『shopt -s -o nounset』功能,變數必須要先定義才可以使用!

#!/bin/bash

shopt -s -o nounset

FAV_COLOR=red
echo $FAV_COLOR

image

這樣做有什麼好處呢?

如果不需告變數就可以直接使用變數(這是預設值),此時不小心打錯字,變數名稱打錯了…不會顯示錯誤訊息,因為,bash 以為要找 FAVVV_COLOR 變數(因為不宣告就可以使用),但,FAVVV_COLOR 的內容是空的

#!/bin/bash

echo $FAVVV_COLOR

image

如果需要定義(或宣告)變數才可以使用,加上打錯變數呢?會出現錯誤訊息,顯示未定義的變數

#!/bin/bash

shopt -s -o nounset

echo $FAVVV_COLOR

image

意思是說,打錯變數,會顯示錯誤訊息,比較容易 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)

image

其他參考資料:

http://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html

http://man.linuxde.net/shopt

Change shell properties with Linux shopt command

ubuntu 用 shopt 指令讓 cd 指令更好用

廣告
本篇發表於 Bookmark, Linux, Mac, RHEL 7, Solaris, ubuntu, VMware。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s