Antworten:
Ctrl-Z
unterbricht den aktuell laufenden Prozess. Im Ausdruck
for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done
alle Befehle mit Ausnahme von convert
(dh for
, in
, do
und done
) sind bash
‚Keywords s in der aktuellen Shell ausgeführt und Shell selbst nicht unterbrechen kann (und es ist nicht Ihre Absicht sowieso). Wenn Sie also drücken Ctrl-Z
und der Befehl convert
angehalten wird, wird die Schleife einfach beendet, da nichts mehr zu verarbeiten ist.
Wenn Sie die gesamte Schleife anhalten möchten, führen Sie sie einfach in der Subshell-Umgebung aus:
(for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done)
Die einzige mir bekannte Shell, die in der Lage ist, die gesamte Schleife in der aktuellen Shell anzuhalten, ist zsh
.
Ctrl-Z
könnte nur die eine Konvertierungsinstanz aussetzen, es gibt keinen Grund, warum die Schleife nicht fortgesetzt und eine andere gestartet werden könnte. Aus irgendeinem Grund bash
stoppt die Schleife. Wenn ich in dash
der Schleife weiter teste, machen andere Shells wahrscheinlich dasselbe.
zsh
kann die gesamte Schleife, die in der aktuellen Shell ausgeführt wird, ausgesetzt werden ).
bash
Entwickler waren wahrscheinlich der gleichen Meinung wie Sie. Die Schleife fortzusetzen ist immer noch das, was ich erwartet hätte. Wenn Sie den Prozess stoppen und die Handsteuerung wieder auf die Shell übertragen, scheint es natürlich, dass sie dort aufhört, wo sie aufgehört hat (und wahrscheinlich das Verhalten ist, bash
wenn sie nichts hinzugefügt haben Code, um etwas anderes zu tun).
for i in *.txt; do echo "$i"; sleep 0.5 ; done
(GNU bash, Version 4.2.53)