擊4變量在Linux〜
我有可能的值的陣列。我必須將用戶輸入限制爲這些值。BASH:最佳的方式來設置從陣列
Arr=(hello kitty goodbye quick fox)
用戶提供值作爲參數傳遞給腳本:
bash myscript.sh -b var
目前,我嘗試以下:
function func_exists() {
_var="$1"
for i in ${Arr[@]}
do
if [ "$i" == "$_var" ]
then
echo hooray for "$_var"
return 1
fi
done
return 0
}
func_exists $var
if [ $? -ne 1 ];then
echo "Not a permitted value."
func_help
exit $E_OPTERROR
fi
看起來工作得很好,在那裏爲測試用戶更好的方法輸入一個允許值的數組?
更新:我喜歡約翰·K公司的答案...有人可以明確使用$ @?我知道這代表所有的位置參數 - 所以我們將第一個參數從堆棧中移出,$ @現在代表了所有剩餘的參數,那些是傳遞的數組......這是正確的嗎?我討厭盲目使用代碼而不理解......即使它有效!
不錯的改進!謝謝!除了進一步的輝煌,這將得到我的投票。 – Bubnoff 2011-06-02 02:52:11
我對函數中$ @的理解:將第一個arg移出堆棧 - $ @現在代表餘數。它是否正確? – Bubnoff 2011-06-02 02:58:13
@Bubnoff是的,沒錯。 – 2011-06-02 12:58:06