次のオプションのリストがあります。
opts="-p,--plong,-q,--qlong"
文字列を2つの異なる文字列に分割しました。 1つは短期オプション用、もう1つは長期オプション用です。
ops="" opl=""
for kl in ${opts//,/ }; do
if [[ "$kl" == --* ]]; then
opl="${opl},${kl}" # Short Options
elif [[ "$kl" == -* ]]; then
ops="${ops},${kl}" # Long Options
fi
done
opl="${opl:1}" ; ops="${ops:1}"
これは作る
ops: "-p,-q"
opl: "--plong,--qlong"
短いオプションの場合は、パターンで構成された配列を構成したいと思います。
("-p+([[:print:]])" "-p" "-p=*" "-q+([[:print:]])" "-q" "-q=*")
長期オプションの場合
("--plong" "--plong=*" "--qlong" "--qlong=*")
次の回避策を使い始めましたが、うまくいきません。
echo "$ops" | tr ',' ' ' |
xargs -I{} echo "-{}+([[:print:]])" "{}"
echo "$opl" | tr ',' ' ' |
xargs -I{} echo "{}" "{}=*"
答え1
この問題を解決しました。
pary=()
for kl in ${ops//,/ }; do
pary+=("$kl+([[:print:]])" "$kl")
done
printf '%s\n' "ary: ${ary[*]}"
qary=()
for kl in ${opl//,/ }; do
qary+=("$kl" "${kl}=*")
done
printf '%s\n' "ary: ${ary[*]}"