如何透過鍵盤輸入退出 bash 循環?

如何透過鍵盤輸入退出 bash 循環?

我有一個bash lopp作為

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

我透過鍵盤輸入中斷長循環,Ctrl+CCtrl+C只是終止腳本。我正在尋找一種替代方案來繼續當前循環並STUFF在當前循環中完成運行後打破循環。

答案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

我們使用「break」告訴陷阱,當INT(中斷,又稱SIGINT)訊號產生時(按 Ctrl+C 時發生),我們要執行break來中斷迴圈。

我們可以將任意 shell 命令放在引號中,而不是“break”,並且當產生給定訊號(在我們的範例中為 INT)時將執行該命令。

最後,我們再次執行 trap 將-“INT”處理程序恢復為預設操作。

以下是一些可供進一步閱讀的資源和範例:

相關內容