如何运行在每次迭代后暂停直到按下某个键的for循环? 例如,如果我想打印file1,file2,file3的行号,但只是在按下一个键后继续执行:
for f in dir/file? ; do wc -l $f ; pause until key is pressed ; done
道歉,如果这是微不足道的,我是编码的新手。
答案 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。然后要求用户输入一个选项,如果用户输入任何内容,那么它将一次又一次地循环。