2011-01-08 188 views
3

我有以下Bash腳本。我怎樣才能讓它在按鍵後暫停或在多次循環後暫停,但如果我不按任何鍵,它應該循環?暫停打擊循環

for i in `cat files` 
do 
    echo $i 
done 

回答

4

我想我最初誤讀了你的問題。您可以隨時按Ctrl+Z暫停活動進程,並使用內置的fg恢復活動進程。

爲了使腳本暫停已經進行了多次迭代後,您可以使用一個計數器變量和modulo操作%

i=1 
for f in `cat files`; do 
    echo $f 
    if ((i % 10 == 0)); then # pause every 10 iterations 
     read 
    fi 
    let "i++" 
done 

我原來的答覆是:

您可以使用內建的read讓外殼等待,直到用戶按下RETURN鍵(或EOF鍵,Ctrl+D):

for i in `cat files` 
do 
    echo $i 
    read 
done 

您可以使用read,以便在-t選項有它超時並繼續執行:

for i in `cat files` 
do 
    echo $i 
    read -t 1 
done 

以上1秒鐘後恢復執行,如果用戶不按RETURN鍵。

+0

這使腳本等待anykey啓動each-loop-tick – newmusicblog 2011-01-08 11:27:00