getopts を使用して、bash で実行されているカスタム スクリプトのオプションを解析しています。
これを実現するためのコードは非常に標準的です。
while getopts :s: opt; do
case $opt in
s)
echo "\$OPTARG is $OPTARG"
;;
esac
done
ただし、数値引数で指定したパラメーターの $OPTARG は空です。
myscript.sh -s 012345 # => [ $OPTARG = "" ]
この問題は、引数を引用符で囲むことで解決できます。ただし、これは数値引数には醜いです。
myscript.sh -s "012345" # => [ $OPTARG = "012345" ]
これよりもエレガントなソリューションはありますか?
アップデート
私の実際のコードには「:」がないことが判明したため、パラメーターは引数を予期していませんでした。文字列値が期待どおりに出力された理由はわかりませんが、数値引数が機能するようになりました。パラメーターが引数を取ることを指定しました。