在 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

convert除(ie forin和)之外的所有命令都是在当前 shell 中运行的关键字do,并且 shell 无法自行挂起(无论如何这都不是您的意图)。因此,当您点击,并且命令挂起时,循环将简单地退出,因为不再需要处理任何内容。donebashCtrl-Zconvert

如果您希望能够挂起整个循环,那么只需在子 shell 环境中运行它即可:

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

我所知道的唯一能够在当前 shell 中挂起整个循环的 shell 是zsh.

相关内容