キーボード入力で bash ループを終了するにはどうすればいいですか?

キーボード入力で bash ループを終了するにはどうすればいいですか?

bash lopp私は

#!/bin/bash
for (( c=0; c<=1000000; c++ ))
do  
SOME STUFF HERE
done

キーボード入力で長いループを中断しましたCtrl+Cが、Ctrl+C単にスクリプトを終了しました。現在のサイクルを続行し、現在のサイクルでの実行が終了した後にループを終了する代替手段を探していますSTUFF

答え1

1 つの方法は、次のように、trapControl-C 信号を送信breakして から出力することです。loop

#!/bin/bash
trap break INT
for (( c=0; c<=1000000; c++ ))
do  
SOME STUFF HERE
done
echo "I have broken out of the interminably long for loop"
trap - INT
sleep 1
echo "END."

これがどのように機能するかについての詳細は、次のキー行を参照してください。

trap break INT

そしてまた

trap - INT

INT「break」を使用して、(割り込み、別名SIGINT)信号が生成されたとき(Ctrl + C を押すと発生)にループを中断するために break を実行するようにトラップに指示します。

「break」の代わりに、任意のシェル コマンドを引用符で囲むと、指定されたシグナル (この場合は INT) が生成されたときにそれが実行されます。

最後に、trap を再度実行して、-「INT」ハンドラーをデフォルトのアクションに戻します。

さらに詳しい情報や例については、以下のリソースをご覧ください。

関連情報