如何運行for循環,每次迭代後暫停,直到按下某個鍵? 例如,如果我想打印文件1,文件2,文件3的行數,但只按一個鍵後持續每個:Linux - 暫停循環,直到按下鍵
for f in dir/file? ; do wc -l $f ; pause until key is pressed ; done
道歉,如果這是微不足道的,我是新來的編碼。
如何運行for循環,每次迭代後暫停,直到按下某個鍵? 例如,如果我想打印文件1,文件2,文件3的行數,但只按一個鍵後持續每個:Linux - 暫停循環,直到按下鍵
for f in dir/file? ; do wc -l $f ; pause until key is pressed ; done
道歉,如果這是微不足道的,我是新來的編碼。
使用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
@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。然後讓用戶輸入一個選項,如果用戶輸入任何東西,那麼它會一次又一次地循環。
這是我發現的唯一答案,就是POSIX。很快測試。 – zaTricky
@zaTricky,當然,請讓我知道那是怎麼回事。 – RavinderSingh13
工程100% - 只有你*有*按下輸入。我發現的所有其他「解決方案」都使用非POSIX標誌(例如-p,-s,-n) – zaTricky