あなたが指定したオプションを連結し、getopts
でそれらを区切ります。 case
ステートメントでは、各オプションを個別に処理します。
オプションが表示されているときにフラグを設定し、getopts
ループの完了後に必須の「オプション」(!)が存在することを確認することができます。ここ
は一例であり:
#!/bin/bash
rflag=false
small_r=false
big_r=false
usage() { echo "How to use"; }
options=':ij:rRvh'
while getopts $options option
do
case $option in
i ) i_func;;
j ) j_arg=$OPTARG;;
r ) rflag=true; small_r=true;;
R ) rflag=true; big_r=true;;
v ) v_func; other_func;;
h ) usage; exit;;
\?) echo "Unknown option: -$OPTARG" >&2; exit 1;;
: ) echo "Missing option argument for -$OPTARG" >&2; exit 1;;
* ) echo "Unimplemented option: -$OPTARG" >&2; exit 1;;
esac
done
shift $(($OPTIND - 1))
if ! $rflag && [[ -d $1 ]]
then
echo "-r or -R must be included when a directory is specified" >&2
exit 1
fi
これはgetopts
関数の完全なリファレンス実装を表すが、より大きなスクリプトの唯一のスケッチです。
デニスに感謝します。私はあなたが提案したようにフラグを使用しました。私は、オプションを連結して変数に格納し、後で提供されるオプションに基づいて処理を行うことで、ロジックを単純化しようとしました。 –
@RameshSamane:どうぞよろしくお願いいたします。私の答えが役に立ったら、それを合格とマークしてください。 –
私はすでにそれを試しましたが、「投票で15の評判が必要です」というメッセージを受け取りました。しかし、スレッドの最下部にある「はい」をクリックして、「この記事は役に立ちましたか? 「あなたのフィードバックをありがとう」というメッセージを受け取りました。 –