これは、これらの他のソリューションのいくつかがそうではなかったLinuxの複数のフレーバーで機能しました(ここで最も人気のあるものを含む)。読みやすいと思います...
echo Press enter to continue; read dummy;
read
への引数として変数を指定する必要があることに注意してください。 .
私はこれらの非常に短い方法をよく使用します。それらは @theunamedguy や @Jim のソリューションに似ていますが、タイムアウトとサイレント モードが追加されています。
私は特に最後のケースが好きで、ユーザーが Enter を押すまでループで実行される多くのスクリプトで使用しています。 .
コマンド
-
解決策を入力
read -rsp $'Press enter to continue...\n'
-
エスケープ ソリューション (-d $'\e' を使用)
read -rsp $'Press escape to continue...\n' -d $'\e'
-
重要なソリューション (-n 1 を使用)
read -rsp $'Press any key to continue...\n' -n 1 key # echo $key
-
事前に選択された選択肢のある質問 (-ei $'Y' を使用)
read -rp $'Are you sure (Y/n) : ' -ei $'Y' key; # echo $key
-
タイムアウト ソリューション (-t 5 を使用)
read -rsp $'Press any key or wait 5 seconds to continue...\n' -n 1 -t 5;
-
スリープ強化エイリアス
read -rst 0.5; timeout=$? # echo $timeout
説明
-r 「\」や「^」などの文字の組み合わせを許可しない raw モードを指定します。
-s サイレント モードを指定します。これは、キーボード出力が必要ないためです。
-p $'プロンプト ' プロンプトを指定します。プロンプトは、スペースとエスケープ文字を許可するために $' と ' の間にある必要があります。注意してください。エスケープ文字を有効にするには、ドル記号で単一引用符を挟む必要があります。それ以外の場合は、単純な引用符を使用できます。
-d $'\e ' は区切り文字として escappe を指定するため、現在のエントリの最後の文字として、これには任意の文字を入れることができますが、ユーザーが入力できる文字を入れるように注意してください。
-n 1 1 文字だけが必要であることを指定します。
-e readline モードを指定します。
-i $'Y ' readline モードで初期テキストとして Y を指定します。
-t 5 5 秒のタイムアウトを指定します
キー 入力を知る必要がある場合に役立ちます。-n1 の場合は、押されたキーです。
$? 最後のプログラムの終了コードを知るのに役立ちます。読み取りの場合は142、タイムアウトの場合は0、正しい入力です。 $を入れますか?すべてのコマンドが $?
を書き換えるからです。
read
これを行います:
[email protected]:~$ read -n1 -r -p "Press any key to continue..." key
[...]
[email protected]:~$
-n1
1 文字だけ待機することを指定します。 -r
そうしないと、バックスラッシュなどを押すと、次のキーを押すまで登録されないため、生モードにする必要があります。 -p
スペースが含まれている場合は引用符で囲む必要があるプロンプトを指定します。 key
引数は、押されたキーを知りたい場合にのみ必要です。その場合は $key
でアクセスできます。 .
Bash を使用している場合は、-t
でタイムアウトを指定することもできます これにより、キーが押されていないときに read が失敗を返します。例えば:
read -t5 -n1 -r -p 'Press any key in the next five seconds...' key
if [ "$?" -eq "0" ]; then
echo 'A key was pressed.'
else
echo 'No key was pressed.'
fi
read
パラメータなしの場合は、Enter キーを押した場合にのみ続行されます。DOS pause
いずれかのキーを押すと、コマンドが続行されます。 read –n1
を使用 この動作が必要な場合。