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 に答える