[解決済み】Bashで、任意のコマンドやエイリアスに「Are you sure [Y/n]」を追加するには?
2022-04-05 04:13:53
質問
このような場合、Bashでconfirmを追加して
本当にいいんですか?[Y/n]
は、Mercurial の
hg push ssh://[email protected]//somepath/morepath
というのは、実はエイリアスなのです。 それを実現するためにエイリアスに追加できる標準的なコマンドはあるのでしょうか?
その理由は
hg push
と
hg out
は似たような音に聞こえることがあり、時々
hgoutrepo
と入力することがあります。
hgpushrepo
(どちらもエイリアスです)。
更新しました。
のように、他のコマンドを使った組み込みコマンドのようなものにできれば。
confirm && hg push ssh://...
と聞けるようなコマンドがあればいいんですけどね。
yes
または
no
であれば、残りを続けます。
yes
.
解決方法は?
の、よりコンパクトで汎用性の高い形式です。 ハーミッシュの 回答 . 大文字と小文字の混在した文字も扱える。
read -r -p "Are you sure? [y/N] " response
case "$response" in
[yY][eE][sS]|[yY])
do_something
;;
*)
do_something_else
;;
esac
あるいは、Bashの >= バージョン 3.2 の場合。
read -r -p "Are you sure? [y/N] " response
if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]
then
do_something
else
do_something_else
fi
注:もし
$response
が空文字列の場合、エラーになります。修正するには、単に引用符を追加してください。
"$response"
. - 文字列を含む変数では常に二重引用符を使用します (例: 好ましく使用するのは
"$@"
ではなく
$@
).
あるいは、Bash 4.x。
read -r -p "Are you sure? [y/N] " response
response=${response,,} # tolower
if [[ "$response" =~ ^(yes|y)$ ]]
...
編集する
編集を受け、以下のように
confirm
コマンドは、私の回答の最初のバージョンに基づいています(他の2つのバージョンでも同様に動作します)。
confirm() {
# call with a prompt string or use a default
read -r -p "${1:-Are you sure? [y/N]} " response
case "$response" in
[yY][eE][sS]|[yY])
true
;;
*)
false
;;
esac
}
この機能を使うには
confirm && hg push ssh://..
または
confirm "Would you really like to do a push?" && hg push ssh://..
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] 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で文字列から改行を削除する方法
-
[解決済み] ファイルに書き込むが、ファイルが存在する場合は上書きする
-
[解決済み] Bashでの動的な変数名
-
[解決済み] bashの文字列の等値性テストで、予期しない演算子エラーが発生するのはなぜですか?重複
-
[解決済み] IPアドレスのまとめ方
-
[解決済み] シェルスクリプトでの連想配列
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] パラメータを取るBashのエイリアスを作る?
-
[解決済み] bashスクリプトでユーザーに確認のプロンプトを出すには?重複
-
[解決済み】bashスクリプトで他のコマンドにパラメータを転送するにはどうすればいいですか?