2015-09-02 115 views
1

這是一個循環,應該倒數10秒($rtime)。 如果您想早一點打破循環,則必須鍵入n。 我能以某種方式不等待,直到讀取獲得輸入,因爲此刻循環總是 卡住讀取並等待輸入。Shell腳本 - 不要等待閱讀

ct=$(date +"%s") 
    while [ $(($ctn - $ct)) -le $rtime ] ; do 
     ctn=$(date +"%s") 
     read r 
     if [ "$r" = "n" ] ; then 
      break 
     fi 
    done 

回答

1

您可以指定一個超時read

read -t 1 r 

這將導致它完成,如果沒有在一秒鐘之後進入。

+0

或者只是使用'read -t $ rtime r'並且完全避免這個循環(儘管這會在任何輸入上打破,而不僅僅是'n'。 –

+0

當然!但是你可能想在循環中做其他事情打印一個倒計時),這就是爲什麼我去這個選項:) – psmears

+0

感謝您的快速響應!是的,循環中還有其他一些東西。 :) – TheCheatsrichter