[英]Defining flag parameters in bash
我編寫了 bash 腳本,其中包含了一些日志記錄,以查看執行的每個步驟中發生了什么。
現在,我可以將這些日志拆分為調試信息和用戶信息(某些內容已完成等)。 所以我想要一些標志參數,比如--verbose
,我在其他一些 bash 函數中看到它來啟用完整的日志記錄和用法如下:
some_function --verbose
或者
some_function -v
我稱之為標志參數,但不知道正確的名稱是什么,因此我找不到任何有用的東西。
如何為 bash 腳本定義這些參數?
案例更適合這個
while [[ "$@" ]]; do
case "$1" in
-v|--verbose) verbose="true";;
esac
shift
done
同樣可以在函數中完成,但請注意,在這種情況下,它將處理傳遞給函數some_function -v
參數。
some_function () {
while [[ "$@" ]]; do
case "$1" in
-v|--verbose) verbose="true";;
esac
shift
done
}
然后在腳本中的某個地方,您可以檢查是否設置了verbose
[[ "$verbose" ]] && echo "verbose mode" || echo "silent mode"
現在,我使用了解決方法並將其作為正常位置參數(如$n
)。 確切地說,我有四個參數的列表,所以我像這樣收集這個標志:
verbose=$4
if [ ! "$verbose" == "--verbose" ]; then
verbose=""
fi
因此,如果參數與標志不匹配,那么我將其留空,如果我想使用它,我只需將它與空字符串進行比較。
不過對我來說有一個很大的缺點:它必須在參數列表中的第 4 位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.