[解決済み] Bashでフラグ付きの引数を取得する方法
2022-03-16 08:09:43
質問
bashでこのように位置決めされたパラメータを簡単に取得できることは知っています。
$0
または
$1
このようにフラグオプションを使って、各パラメータが何に使われるかを指定できるようにしたいのです。
mysql -u user -h host
を取得するのに最適な方法は何ですか?
-u param
の値と
-h param
の値は、位置ではなくフラグで指定するのですか?
どのように解決するのですか?
これは私が普段使っているイディオムです。
while test $# -gt 0; do
case "$1" in
-h|--help)
echo "$package - attempt to capture frames"
echo " "
echo "$package [options] application [arguments]"
echo " "
echo "options:"
echo "-h, --help show brief help"
echo "-a, --action=ACTION specify an action to use"
echo "-o, --output-dir=DIR specify a directory to store output in"
exit 0
;;
-a)
shift
if test $# -gt 0; then
export PROCESS=$1
else
echo "no process specified"
exit 1
fi
shift
;;
--action*)
export PROCESS=`echo $1 | sed -e 's/^[^=]*=//g'`
shift
;;
-o)
shift
if test $# -gt 0; then
export OUTPUT=$1
else
echo "no output dir specified"
exit 1
fi
shift
;;
--output-dir*)
export OUTPUT=`echo $1 | sed -e 's/^[^=]*=//g'`
shift
;;
*)
break
;;
esac
done
キーポイントは
-
$#
は引数の数 - while ループは与えられたすべての引数を調べ、case 文の中でその値を照合します。
- shiftは最初の1つを取り去ります。case文の中で複数回shiftすることで、複数の値を取ることができます。
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み] Bashで変数が設定されているかどうかを確認する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Bashのif条件で「unary operator expected」エラーが発生する。
-
[解決済み] スクリプトからのエラーメッセージを含むすべての端末出力をログファイルにパイプする方法
-
[解決済み] ssh / リモートbashコマンドでシングルクォート文字をエスケープするにはどうすればよいですか?
-
[解決済み] Curl:応答を待たない[重複]。
-
[解決済み] awk で行を飛ばすにはどうしたらいいですか?
-
[解決済み] cygwin の ssh が終了時に "Killed by signal 1" と表示される
-
[解決済み] bashスクリプトで変数の束縛を解除
-
[解決済み] シェルスクリプトで整数式が期待されるエラー
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み] 私のbashスクリプトに渡されたすべての引数を、私の関数に渡すにはどうすればよいですか?[重複しています。]