簡體   English   中英

在 bash 中定義標志參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM