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
--param4
1つではなく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