我有一些PDF文件。我想检查他们每个人20秒。我尝试这样做的方式如下:for file in *.pdf; do echo $file; evince $file; sleep 20s; killall evince; done
。它显示第一个文件,但在20秒后不会杀死它。这里出了什么问题?
答案 0 :(得分:2)
您需要异步启动evince
以便sleep
能够运行:
for file in *.pdf; do
echo $file;
evince $file & sleep 20s;
killall evince;
done
<强>更新强>
正如所建议的,这更好:
for file in *.pdf; do
evince "$file" & evince_pid=$!
sleep 20s
kill $evince_pid
done
答案 1 :(得分:1)
如果可用,请使用timeout
(GNU coreutils的一部分):
for f in *.pdf; do
echo "$f"
timeout 20 evince "$file"
done