Linux - 暂停循环,直到按下键

时间:2017-02-14 19:48:37

标签: bash for-loop

如何运行在每次迭代后暂停直到按下某个键的for循环? 例如,如果我想打印file1,file2,file3的行号,但只是在按下一个键后继续执行:

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

道歉,如果这是微不足道的,我是编码的新手。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

此脚本将继续运行,直到/除非系统获得杀死它的信号(例如 - > cntl + c等)。如果这有帮助,请告诉我。逻辑很简单,创建了一个陷阱第一行脚本来处理用户的中断,然后创建了一个for循环,它将查看包含所有文件的目录(您可以根据需要更改它)。然后显示当前文件的wc -l。然后要求用户输入一个选项,如果用户输入任何内容,那么它将一次又一次地循环。