[英]shell scripting default value
我正在嘗試學習Shell腳本,並且對:=或默認值的想法感到困惑
#!/bin/sh
echo "Please enter a number \c"
read input
input=$((input % 2))
if [ $input -eq 0 ]
then
echo "The number is even"
else
echo "The number is odd"
fi
echo "Beginning of second part"
a="BLA"
a="Dennis"
echo $a
unset a
echo "a after unsetting"
echo $a
${a:=HI}
echo "unsetting a again"
unset a
echo $a
我明白了
Dennis
a after unsetting
./ifstatement.sh: line 21: HI: command not found
unsetting a again
當你寫
${a:=HI}
shell將擴展結果拆分為多個單詞,並將第一個單詞解釋為命令,就像在任何命令行中一樣。
相反,寫
: "${a:=HI}"
:
是無操作命令。 用引號引起來的shell不會嘗試進行globing,這在極少數情況下可能會導致速度降低或出現錯誤。
沒有一種方法可以設置一個值,當您取消設置變量時,該變量將始終“回退”到該值。 使用unset
命令時,您將刪除變量(而不僅僅是清除與之關聯的值),因此它不能具有任何值(默認值或其他值)。
而是嘗試結合兩種方法。 首先,確保變量已初始化。 其次,創建一個將變量設置為所需默認值的函數。 調用此變量而不是unset
。 通過這種組合,您可以模擬具有“默認”值的變量。
${a:=HI}
擴展為HI
,然后您的shell嘗試作為命令運行。 如果您只是嘗試設置未設置的變量的值,則可能需要執行[ -z "$b" ] && b=BYE
不用調用未unset $a
,而是再次執行${a:=HI}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.