[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
2022-03-17 23:26:31
質問
シェルスクリプトで入力を一時停止し、ユーザーに選択を促すようにしたいのですが。
標準の
Yes
,
No
または
Cancel
というタイプの質問をします。
一般的なbashプロンプトでこれを実現するにはどうしたらよいでしょうか?
どのように解決するのですか?
シェルプロンプトでユーザー入力を得るための最もシンプルで広く利用されている方法は
read
コマンドを使用します。その使い方を説明するには、簡単なデモンストレーションを行うのが一番です。
while true; do
read -p "Do you wish to install this program?" yn
case $yn in
[Yy]* ) make install; break;;
[Nn]* ) exit;;
* ) echo "Please answer yes or no.";;
esac
done
もう一つの方法
指摘された
によって
スティーブン・フーヴィヒ
は、Bashの
select
コマンドを使用します。以下は、同じ例で
select
:
echo "Do you wish to install this program?"
select yn in "Yes" "No"; do
case $yn in
Yes ) make install; break;;
No ) exit;;
esac
done
と
select
入力のサニタイズは必要ありません。利用可能な選択肢が表示され、その選択肢に対応する数字を入力することになります。また、自動的にループします。
while true
のループで、無効な入力があった場合に再試行します。
また レア・グリ でリクエストの言語を問わない方法を示しました。 回答 . 最初の例を多言語対応にすると、次のようになります。
set -- $(locale LC_MESSAGES)
yesptrn="$1"; noptrn="$2"; yesword="$3"; noword="$4"
while true; do
read -p "Install (${yesword} / ${noword})? " yn
if [[ "$yn" =~ $yesexpr ]]; then make install; exit; fi
if [[ "$yn" =~ $noexpr ]]; then exit; fi
echo "Answer ${yesword} / ${noword}."
done
もちろん、他の通信文字列(Install, Answer)も未翻訳であり、より完全な翻訳が必要ですが、部分的な翻訳でも多くの場合役に立ちます。
最後に エクセレントアンサー によって F. ハウリ .
関連
-
[解決済み] Bashスクリプトで引数を反復処理する方法
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] シェルで、「2>&1」はどういう意味ですか?
-
[解決済み] ディレクトリが存在しない場合のみmkdirする方法は?
-
[解決済み] Bashでファイルの中身をループする
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
-
[解決済み] シェルスクリプトでYYYY-MM-DD形式の日付にする
-
[解決済み] ls を使用してディレクトリとその合計サイズを一覧表示する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Manjaro linuxでマウスの速度を設定する方法は?Manjaroのマウスのカーソル速度を設定する方法に関するヒント
-
Centos7のインストールと展開無料のconfluence wikiの(知識ベース)詳細な操作手順
-
Linux Mintで入力メソッドを削除する方法は?Linux Mintで冗長な入力メソッドを削除するためのヒント
-
deepin depth systemはどのような内容でアップデートされましたか?deepinの最新版アップデート内容まとめ
-
deepin20のデフォルトブラウザを設定するには?deepinにデフォルトブラウザを追加するためのヒント
-
makeの低レベルエラー:セパレータストップがない
-
[解決済み] find .コマンドでディレクトリを除外する方法
-
[解決済み] ls を使用してディレクトリとその合計サイズを一覧表示する
-
[解決済み] bashスクリプトでユーザーに確認のプロンプトを出すには?重複
-
[解決済み】Bashで、任意のコマンドやエイリアスに「Are you sure [Y/n]」を追加するには?