前提・実現したいこと
シェルスクリプトのgetoptsで「1文字より多い文字数」をオプション指定したいです。
該当のソースコード
下記のように文字列「CDE」をオプションにしようとすると、エラーになります。
#!/bin/bash while getopts "'CDE:'b:" opts do case $opts in 'CDE') echo "piyo" ;; b) TARGET_FILE=$OPTARG ;; :) echo "Option -$OPTARG requires an argument !!!" >&2 ;; ¥?) echo "What is -$OPTARG option ???" >&2 ;; esac done if [ "$TARGET_FILE" != "" ]; then echo TARGET = $TARGET_FILE fi
●結果 $ sh getop.sh -CDE test -b test2 TARGET = test2
"piyo"が表示されないことから、オプションCDEが正しく処理されていないことがわかります。
なお、「'CDE:'」を「CDE:」のようにクォーテーションを取り除いても、結果は同じくエラーでした。
試したこと
●オプションの文字列が"-a"など1文字の場合は成功します。検索するとこの情報がほとんどでした。
#!/bin/bash while getopts "a:b:" opts do case $opts in a) echo "piyo" ;; b) TARGET_FILE=$OPTARG ;; :) echo "Option -$OPTARG requires an argument !!!" >&2 ;; ¥?) echo "What is -$OPTARG option ???" >&2 ;; esac done if [ "$TARGET_FILE" != "" ]; then echo TARGET = $TARGET_FILE fi
●結果 $ sh getop.sh -a test -b test2 piyo TARGET = test2
お詳しい方、シェルスクリプトのgetoptsで「1文字より多い文字数」をオプション指定する方法を、ご教示お願いできませんでしょうか。
よろしくおねがいします。
解決後の追記:
「1より多い文字数のオプション」を、ロングオプションと呼ぶらしいです。
このワードで調べたら、情報がたくさんでてきました。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/17 03:41
2020/01/17 03:48 編集
2020/01/17 06:46