1

我有某些 PDF 文件。我想检查他们每个人 20 秒。我试图这样做的方式如下for file in *.pdf; do echo $file; evince $file; sleep 20s; killall evince; done:它显示第一个文件,但在 20 秒后不会杀死它。这里出了什么问题?

4

2 回答 2

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
于 2013-11-05T20:33:04.997 回答
1

如果可用,请使用timeout(GNU coreutils 的一部分):

for f in *.pdf; do
    echo "$f"
    timeout 20 evince "$file"
done
于 2013-11-05T20:36:41.403 回答