bashスクリプトで4つのオプション(それぞれ短いバージョンと長いバージョン)を取得する必要があります。ここでbashスクリプトでGetopt解析エラーが発生する(オプション宣言ミス)
は私がやったことです:
OPTS=`getopt -l :author,icon,channel,message: -o :aicm: -- "[email protected]"` ||
exit 1
eval set -- "$OPTS"
while true; do
case "$1" in
-a|--author) echo "A:'$2'"; shift;;
-i|--icon) echo "I:'$2'"; shift 2;;
-m|--message) echo "M:'$2'"; shift 2;;
-c|--channel) echo "C:'$2'"; shift 2;;
--) shift; break;;
*) echo Error; exit 1;;
esac
done
そして、ここでは、私が得るものです:もちろん
コマンド
docker run --rm -e SLACK_TOKEN slacker notify --channel foo
出力
C:'--'
Error
、私は希望しますこの出力を持つ:
C:'foo'
だから、 'slacker'は、そのコードが作業しているコマンドとは、上記に含まれていますか?あなたのコードは、 'getopts'を使っているように漠然としているように見えますし、' while'ループで自分自身を再実装します。 – tripleee
明確にするために、スラッカーはビルドしているドッカーのイメージ名です。これは上記のコードを抽出したnotifyという名前のbashスクリプトを含んでいます。私は、私の問題にもっと焦点を当てるために呼び出し部分を簡略化しておくべきでした。 – RaDyUm