私はこのようないくつかのパラメータを-l -s -a -f thing ming
取ります-
。
これは私のコードです。
arrayOfArgs=()
for arg in "$@":
do
case arg in
-*) arrayofArgs+=($args) ;;
esac
done
今arrayOfArgs
これを印刷します。
-l, -s, -a, -f.
私の興味は、結果がカンマで区切られていることです。
同等ですls {"$arrayOfArgs"}
か? ls -l -s -a -f
答え1
この回答は、あなたが要求した問題を解決しようとするのではなく、根本的な問題を解決しようとするソリューションを提供します。この例では、引数がブールa
(スイッチ)であると仮定していますs
が、引数にはl
引数が必要です。
unset -v flagA flagS valueL
while getopts "al:s" OPT
do
case "$OPT" in
a) echo "Got a"; flagA=true ;;
s) echo "Got s"; flagS=true ;;
l) printf 'Got l with value "%s"\n' "$OPTARG"; valueL="$OPTARG" ;;
esac
done
shift "$((OPTIND - 1))"
printf '%s\n' "flagA=${flagA-unset}, flagS=${flagS-unset}, valueL=${valueL-unset}"
if [ "$#" -gt 0 ]; then
printf 'Other arguments:\n'
printf ' - "%s"\n' "$@"
fi
bash
詳細については、マニュアルページを参照してください。