我在 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 for
、in
和)之外的所有命令都是在当前 shell 中运行的关键字do
,并且 shell 无法自行挂起(无论如何这都不是您的意图)。因此,当您点击,并且命令挂起时,循环将简单地退出,因为不再需要处理任何内容。done
bash
Ctrl-Z
convert
如果您希望能够挂起整个循环,那么只需在子 shell 环境中运行它即可:
(for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done)
我所知道的唯一能够在当前 shell 中挂起整个循环的 shell 是zsh
.