在使用 Cli 工具時遇到了一個有趣的腳本問題
-a表示此 cli 工具中的引數
在 Put 或 Post 案例中,我必須傳遞兩個引數。所以:
--verb "$1" \
-a "$2" \
-a "$3"
通過腳本
"put" "[\"name\"]" "testing this"
作業正常!
然后在 Get 案例中,我必須傳遞一個引數。所以:
--verb "$1" \
-a "$2" \
-a "$3"
通過腳本
"get" "[\"name\"]"
當然這會失敗,因為我必須傳遞一個引數,但我確實傳遞了兩個引數,現在只支持 PUT 操作,你認為我如何處理這個以使 PUT 和 GET 都作業?
這一切都在 bash
uj5u.com熱心網友回復:
對于更一般的情況處理(也可以使用三個以上的引數正常作業),構造一個陣列:
#!/usr/bin/env bash
case $BASH_VERSION in '') echo "ERROR: This must be run with bash, not sh" >&2; exit 1;; esac
# unconditionally, we always have a verb; assign to a variable then shift away
args=( --verb "$1" ) # this creates an array
shift # makes old $2 be $1, old $3 be $2, etc
# iterate over remaining arguments and add each preceded by '-a'
for arg in "$@"; do # iterate over all args left after the shift
args =( -a "$arg" ) # for each, add '-a' then that arg to our array
done
# use the constructed array
runYourProgramWith "${args[@]}"
僅正確處理$3可選:
--verb "$1" \
-a "$2" \
${3 -a "$3" }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/524696.html
標籤:重击壳条件语句命令行界面
上一篇:如何使用FFMPEG將視頻與另一個視頻中的音頻結合起來?
下一篇:用awk比較數字
