Bash
將數組解析為 bash 腳本中的許多關鍵字參數之一
我有一個 bash 腳本 (
script.sh
),它接受許多格式的參數--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
接受一個或多個參數而不是一個的參數。例如
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
試試這個:
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