如何以簡明,慣用的方式爲bash變量設置默認值?這只是看起來醜陋:地道bash:設置變量的默認值
if [[ ! -z "$1" ]]; then
option="$1"
else
option="default"
fi
如何以簡明,慣用的方式爲bash變量設置默認值?這只是看起來醜陋:地道bash:設置變量的默認值
if [[ ! -z "$1" ]]; then
option="$1"
else
option="default"
fi
default value : ${parameter:-word} \
assign default value : ${parameter:=word} |_/if unset or null -
error if empty/unset : ${parameter:?mesg} | \ use no ":" for unset only
use word unless empty/unset : ${parameter:+word}/
您可以使用:
option=${1:-default}
如果第一個命令行參數給出,而不是null,則此設置選項,第一個命令行參數。否則,它將選項設置爲默認值。有關參數擴展的詳細信息,請參閱Bash reference manual以及此表單的一些有用變體。
「請注意,如果您使用顯式空的第一個參數調用腳本,則該行爲可能與問題中的代碼有所不同。」不,它不會,因爲你使用了冒號。如果你編寫'$ {1-default}',那麼它將區分未設置和已設置但空的參數。 –
@RomanCheplyaka,謝謝,在手冊中證實了這一點,並編輯了答案。 – Toxaris
對於用途其他比分配默認值,這Toxaris已經覆蓋了,這是值得一提的還有用於-z
反向測試,所以不是
if [[ ! -z "$1" ]]; then
do_something
fi
可以簡單的寫:
if [ -n "$1" ]; then
do_something
fi
,如果沒有else
一個分支,可以縮短到:
[ -n "$1" ] && do_something
+1爲徹底(儘管可能有點太簡潔[缺乏示例])答案。 –