続行する前に警告を表示するには、シェルスクリプトを一時停止する必要があります。たとえば、DOSでは次のようになります。
doit.bat:
[...]
echo 'Are you sure? Press Ctrl-C to abort, enter to continue.'
pause
[...]
Bashでこれを行うにはどうすればよいですか?現時点では、スリープコマンドはトリックを実行するように思われ、十分に単純ですが、正確なアイデアではありません。
doit.sh
[...]
echo 'Are you sure? Press Ctrl-C to abort.'
sleep 3
[...]
線に沿って何か
echo -n "Prompt" #'-n' means do not add \n to end of string
read # No arg means dump next line of input
read -p "Press any key to continue or CTRL-C to abort"
は、スクリプトの14.04で正常に動作します。 @Lekensteynが上記のコメントで述べたように、これは12.04.4以降のケースであるようです。 「ヘルプを読む」ページの状態:
-p Prompt output the string Prompt without a trailing newline before
attempting to read
私のお気に入りの使用法は、デフォルトのタイムアウトを設定することです。これにより、スクリプトを無人で実行することもできます。
echo "Press any key to continue..."
read -n1 -t5 any_key
どこ:
-n1
は、任意の1文字を受け入れるように読み取りに指示します-t5
は、入力を最大5秒待つように指示します私はCentOSでBashとほぼ独占的に仕事をしているので、他のLinuxバリアントでのこの仕事を保証することはできませんが、Bashなので、うまくいくと思います。もしそうなら確実に知りたい! :)
スクリプトを停止するための単純な待機は、スクリプトからkill -STOP $$
を呼び出すことです。一時停止後、スクリプトは-CONTシグナルを受信した後、作業を続行します。
#!/bin/bash
echo "$0 stopping now"
kill -STOP $$
echo "$0 continues its work"