bashスクリプトのいくつかのキーワード引数の1つで配列を解析します。

bashスクリプトのいくつかのキーワード引数の1つで配列を解析します。

script.shさまざまな形式の引数を受け入れるbashスクリプト()があります--keyword value。次の行を使用してスクリプトを呼び出すと、それを読みます。

# Get our arguments using flags,
while [[ "$#" > 1 ]]; do
        case "$1" in
            "--h")
                help
                exit
                ;;
            "--param1") param1="$2"; shift 2;;
            "--param2") param2="$2"; shift 2;;
            "--param3") param3="$2"; shift 2;;
        esac
done

--param41つではなく1つ以上のパラメータを受け入れるパラメータを紹介したいとします。例えば

bash ./script.sh --param1 a --param2 b --param3 c --param4 x y z

注文するしてはいけない理論的には重要なので、param4を押してから別の--paramフラグを押すまで、次のパラメータを引き続き取得する必要があります。

このリストを実際にどのように解析できますか?最後の目標は、param4を繰り返してPythonスクリプトにパラメータとして提供することです。 (それはまるで):

for item in $param4; do
    python my_python_script.py --${item}
done

ベストアンサー1

この試み:

usage(){ echo 'usage: ...'; exit 2; } 
while [ "$#" -gt 1 ]; do
        case $1 in
        --param1) param1=$2; shift 2;;
        --param2) param2=$2; shift 2;;
        --param3) param3=$2; shift 2;;
        --param4)
                shift
                while [ "$#" -gt 0 ]; do
                        case $1 in
                        --param*) break;;
                        *) param4+=("$1"); shift;;
                        esac
                done
                ;;
        *) usage ;;
        esac
done
[ "$#" -gt 0 ] && usage

for p in "${param4[@]}"; do
    echo python "--$p"
done

おすすめ記事