Answers:
Ctrl-Z暂停当前正在运行的进程。表达
for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done
除了所有的命令convert(即for,in,do和done)是bash在当前shell中运行的关键字和外壳不能挂起自己(而不是你的意图无论如何)。因此,当您点击Ctrl-Z,并且命令convert挂起时,循环将简单地退出,因为不再需要处理任何内容。
如果您希望能够挂起整个循环,则只需在subshell环境中运行它即可:
(for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done)
我知道的唯一能够在当前shell中挂起整个循环的shell是zsh。
Ctrl-Z可以只是暂停一个转换实例,没有理由为什么循环无法继续并启动另一个。由于某种原因bash停止了循环。当我在dash循环中继续测试时,其他外壳可能也会执行相同的操作。
zsh能够挂起在当前shell中运行的整个循环)。
bash开发人员可能与您有相同的意见。继续循环仍然是我所期望的,当您停止进程并将控制权交还给Shell时,似乎很自然地选择了中断的位置(bash如果不添加它们,可能就是这种行为)代码以执行其他操作)。
for i in *.txt; do echo "$i"; sleep 0.5 ; done(GNU bash版本4.2.53)