別のコマンドのパラメータをラップは、私は、引数をこのように解析するコマンドtool1
を持っています。したがって、tool2
は、tool1
にパラメータを渡す必要があります。それも
tool2
(--user
)同じパラメータを処理する必要があるかもしれませんが以下のようになります。 --option2
を要約すると
#!/usr/bin/env bash
# ...
while [[ $# -ge 1 ]]
do
key="$1"
case $key in
-O|--option2)
opt2="$2"
shift
;;
-u|--user)
USR="$2"
OTHERS+=("-u $2")
shift
;;
-*)
echo -e "Unrecognized option: \"$key\"" && exit 1
;;
*)
OTHERS+=("$1")
;;
esac
shift
done
## Call tool1 with other parameters to pass
bash tool1.sh ${OTHERS[@]}
# ...
のみtool2
によって使用されるオプションです。 --user
は両方のツールに共通であり、tool1.sh
を呼び出す前にtool2
でも使用できます。このため、この例では--user
を配列OTHERS
のおかげでtool1
に明示的に渡す必要があります。
このようなパラメータの冗長性を処理する可能性のある方法や代替方法について知りたいと思います。このような冗長なパラメータ/オプションの解析に関する行をコピー/ペーストすることなく、別のツールの予想されるパラメータ/オプションをラップするのに役立つ方法論。
なぜ 'getopt'組み込み関数を使用しないのですか? – jehutyy
移植性の問題について。 'getopt'は標準化されていません。しかし、 'getopts'は長いオプションをサポートしていません。 – kaligne
オプションが2番目のスクリプトにあり、最初のスクリプトではない場合はどうなりますか?また、両方のスクリプトがパラメータに作用できる場合、どのように冗長性がありますか? – 123