forループで一時停止したプロセスを再開します。

forループで一時停止したプロセスを再開します。

私はbashで実行します:

for i in ull-*.pbm; do convert $i tmp2/$i.pdf ; done

私はCtrl-Z実行中で、次にfgジョブIDがあります。ただし、残りの繰り返しは完了するまで続きません。理由を知りたいです。

ベストアンサー1

Ctrl-Z現在実行中のプロセスを一時停止します。表現において

for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done

convertfor(例:、および)を除くすべてのコマンドはin現在シェルで実行されているキーワードであり、シェルdoはそれ自体を中断することはできません(とにかくこれはユーザーの意図ではありません)。したがって、クリックしてコマンドが中断された場合、それ以上処理することがないため、ループは終了します。donebashCtrl-Zconvert

ループ全体を中断するには、サブシェル環境で実行します。

(for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done)

現在のシェル内でループ全体を掛けることができる唯一のシェルですzsh

おすすめ記事