2017-02-14 90 views
3

如何運行for循環,每次迭代後暫停,直到按下某個鍵? 例如,如果我想打印文件1,文件2,文件3的行數,但只按一個鍵後持續每個:Linux - 暫停循環,直到按下鍵

for f in dir/file? ; do wc -l $f ; pause until key is pressed ; done 

道歉,如果這是微不足道的,我是新來的編碼。

回答

3

使用read命令等待一個字符(-n1)從用戶輸入

read -p "Press key to continue.. " -n1 -s 

man read頁面中使用的選項,

-n nchars return after reading NCHARS characters rather than waiting 
      for a newline, but honor a delimiter if fewer than NCHARS 
      characters are read before the delimiter 

-s  do not echo input coming from a terminal 

-p  prompt output the string PROMPT without a trailing newline before 
     attempting to read 
0

@Stewart:嘗試:

cat script.ksh 
trap "echo exiting...; exit" SIGHUP SIGINT SIGTERM 
for file in /tmp/* 
do 
     wc -l $file 
echo "Waiting for key hit.." 
read var 
     if [[ -n $var ]] 
     then 
       continue 
     fi 
done 

此腳本將保持運行g直到/除非系統得到信號來殺死它(例如 - > cntl + c等)。讓我知道這是否有幫助。邏輯很簡單,創建一個陷阱第一行腳本來處理用戶的中斷,然後創建一個for循環,它將查看包含所有文件的目錄(您可以根據需要更改它)。然後顯示當前文件的wc -l。然後讓用戶輸入一個選項,如果用戶輸入任何東西,那麼它會一次又一次地循環。

+1

這是我發現的唯一答案,就是POSIX。很快測試。 – zaTricky

+0

@zaTricky,當然,請讓我知道那是怎麼回事。 – RavinderSingh13

+1

工程100% - 只有你*有*按下輸入。我發現的所有其他「解決方案」都使用非POSIX標誌(例如-p,-s,-n) – zaTricky