Bashはキーが押されるのを待ちます

Bash Wait Keypress



`read`コマンドは、bashスクリプトでユーザー入力を取得するために使用されます。 readコマンドでさまざまなタイプのオプションを使用して、bashスクリプトに入力を受け取ることができます。特定のキーが押されるまでスクリプトが実行されるように、または特定のキーに基づいて特定のスクリプトが実行されるように、またはプログラムがいずれかのキーが押されるまで特定の時間待機するように、スクリプトを作成する必要がある場合があります。このチュートリアルでは、さまざまな例を使用して、特定のキーまたは特定のタスクのキーを待機するbashスクリプトを作成する方法を示します。

例1:

次のスクリプトを使用してbashファイルを作成します。スクリプトを実行すると、ユーザーがいずれかのキーを押すまでスクリプトが続行されます。スクリプトは3秒ごとにユーザーの入力を待機し、ユーザーがキーを押さない場合はメッセージを出力します。 キーが押されるのを待っています







#!/ bin / bash
捨てた '何かキーを押すと続行します'
その間 [ NS ];NS
読んだ -NS 3 -NS 1
もしも [ $?=0 ];それから
出口;
そうしないと
捨てた 「キーが押されるのを待っています」
なれ
終わり

スクリプトを実行します。



$bashkey1.sh

出力:







例2:

次のスクリプトを使用してbashファイルを作成します。この例では、ユーザーが「q」を押すと終了する無限のwhileループが使用されています。ユーザーが「q」のないキーを押すと、カウンター変数の値が1増加し、値が出力されます。

#!/ bin / bash
捨てた '終了するには' q 'を押してください
カウント=0
その間:;NS
読んだ -NS 1<&1
もしも [[ $ k= q]];それから
printf 'NSプログラムを終了するNS'
壊す
そうしないと
((((カウント=$ count+1)。)。
printf 'NS繰り返します$ countタイムズNS'
捨てた '終了するには' q 'を押してください
なれ
終わり

スクリプトを実行します。



$bashkey2.sh

出力:

例3:

ユーザーが押したキーに基づいてさまざまなタイプのタスクを実行する次のスクリプトを使用してbashファイルを作成します。ユーザーが「1」を押すと、2つのコマンドライン引数が追加されて出力されます。ユーザーが「2」を押すと、2つのコマンドライン引数が減算されて出力されます。スクリプトは、ユーザーが「3」を押すまで継続的に実行されます。

#!/ bin / bash
v1=$ 1
v2=$ 2
その間
NS
捨てた '1。添加'
捨てた '2。減算」
捨てた '3。終了する'
捨てた -NS 「タイプ1または2または3:」
読んだ -NS 1 -NS 15
printf 'NS'
場合 $ a
1* )。 捨てた '$ v1+$ v2=$(($ v1 + $ v2)) ';;

2* )。 捨てた '$ v1-$ v2=$(($ v1- $ v2)) ';;

3* )。 出口 0;;


* )。 捨てた '再試行。';;
esac
終わり

2つの数値引数値を使用してスクリプトを実行します。

$bashkey3.sh35 15

出力:

例4:

次のスクリプトを使用してbashファイルを作成します。ユーザーがESCキーを押すと、スクリプトは終了します。このスクリプトは、ESCキーが押されるまでユーザーが押したキーを出力します。

#!/ bin / bash
ユーザー入力=''
捨てた 「ESCキーを押して終了します」
#1文字を読む
その間 読んだ -NS -n1
NS
#入力の場合== ESCキー
もしも [[ $ key== $'と' ]];
それから
壊す;
なれ
#ユーザーが押した変数にキーを追加します。
userinput + =$ key
終わり
printf 'NS入力しました:$ userinputNS'

スクリプトを実行します。

$bashkey4.sh

出力:

例5:

ENTERキーがスクリプトを終了するのを待つ次のコードでbashファイルを作成します。スクリプトはサーバー名を入力として受け取り、2秒ごとにサーバーにpingを実行しようとします。 pingコマンドがサーバーから応答を取得すると、出力を表示してスクリプトを終了します。それ以外の場合は、メッセージを出力してユーザーの応答またはENTERキーを待機します。接続を試みています…。

#!/ bin / bash
捨てた 「pingするサーバーアドレスを入力してください」
読んだサーバ
その間 ping -NS 1 -NS -の 2 $ server
NS
捨てた 'と接続しようとしています$ server'
捨てた 「[ENTER]を押して終了します」
読んだ -NS -NS 1 -NS 1
もしも [[ $ key== $' x0a' ]];#入力の場合== ENTERキー
それから
出口 0
なれ
終わり
printf '%NSNS' '$ serverが走っています'

スクリプトを実行します。

$bashkey5.sh

出力:

結論:

このチュートリアルでは、ユーザーの入力が特定のタスクを実行するのを待つか、スクリプトを終了するさまざまな方法でbashスクリプトを作成する方法を示します。上記の例を実行した後、キーが押されるのを待ち、ユーザーが押したキーに基づいて特定のタスクを実行できるような方法でスクリプトを記述できるようになることを願っています。