数日間検索しましたが、まだ答えが見つかりませんでした。あなたが私に正しい方向を教えてくれることを願っています。
1行で呼び出すオプションを含むbashスクリプトを書く方法を知りたいです。例: script.sh -a -b -c
。選択していないパラメータは無視されます。
メニュー/オプションは次のとおりです。
-a description: something
-b description: something else
-c description: something different
-d description: something..
これを行う方法はありますか?
ベストアンサー1
スイッチとパラメータを処理する一般的な方法は、getopts
関数を使用することです。これは組み込み関数であり、bash
bashのマニュアルページ()man bash
でこれに関する情報を見つけることができます。
getopts
デフォルトでは、どのパラメータが必要か、パラメータが必要かどうかを示す文字列を宣言します。getopts
多数の引数(例:-abc
同等物-a -b -c
)とコマンドライン解析を処理します。処理が完了したら、getopts
残りのコマンドラインを必要に応じて処理できます。
一般的なスクリプトスニペットは次のとおりです。
ARG_A= FLAG_B= FLAG_C=
while getopts 'a:bc' OPT # -a {argument}, -b, -c
do
case "$OPT" in
a) ARG_A="$OPTARG" ;;
b) FLAG_B=yes ;;
c) FLAG_C=yes ;;
*) echo "ERROR: the options are -a {arg}, -b, -c" >&2; exit 1 ;;
esac
done
shift $(($OPTIND - 1))
echo "Remaining command line: $*"
?
必要に応じてコマンドオプションとして追加できます。いいねメッセージを使用してください。ブロック内でcase
これを引用するか、前にバックスラッシュを入れなければリテラルとして扱われることを覚えておいてください。
組み込みコマンドなしで別のシェルで実行したい、長い議論たとえば、ユーティリティだけを見るのでは--verbose
ありません。これは組み込まれていませんが、より複雑な状況で提供されるように書かれています。-v
getopt