For döngüsünde askıya alınmış bir işlemi sürdürme


13

Ben bash koşuyorum:

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

Ben Ctrl-Zkoşma ortasında, ve sonra fgonun iş kimliği. Ancak kalan iterasyonlar bitmeye devam etmiyor. Nedenini merak ediyorum?


2
Bunu for i in *.txt; do echo "$i"; sleep 0.5 ; done(GNU bash, Sürüm 4.2.53) için onaylayabilirim
Hauke ​​Laging

Yanıtlar:


11

Ctrl-Zçalışmakta olan işlemi askıya alır. İfadede

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

dışındaki tüm komutlar convert(yani for, in, dove done) olan bashcari kabukta çalışan 'ın anahtar kelimeleri ve kabuk kendini askıya alamaz (ve nasıl olsa Niyetiniz değildir). Dolayısıyla, vurduğunuzda Ctrl-Zve convertaskıya alma komutları verdiğinizde , döngü artık işlenecek bir şey olmadığı için çıkacaktır.

Tüm döngüyü askıya almak istiyorsanız, alt kabuk ortamında çalıştırın:

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

Geçerli kabuktaki tüm döngüyü askıya alabilen tek kabuk var zsh.


4
Hayır, Ctrl-Zsadece bir dönüştürme örneğini askıya alabilir, döngünün devam edip başka bir tane başlatamamasının bir nedeni yoktur. Nedense bashdöngüyü durdurur. Döngüde test ettiğimde dash, diğer mermiler muhtemelen aynısını yapıyor.
Graeme

6
@ Döngüyü bir yinelemeyi askıya alarak devam ettirmek benim için tehlikeli görünüyor çünkü bir sonraki adım bir öncekine bağlı olabilir. Benim için tek makul çözüm tüm döngüyü askıya almak ve alt kabukta yapılabilir (aslında zshmevcut kabuğun içinde çalışan tüm döngüyü askıya alabilir).
jimmij

3
Muhtemelen cevap budur - bashgeliştiriciler muhtemelen sizinle aynı düşünceye sahipti. Döngüye devam etmek yine de beklediğim şeydi, süreci durdurup el kontrolünü kabuğa geri götürdüğünüzde kaldığı yerden devam etmesi doğal görünüyor (ve muhtemelen basheklemedikleri takdirde davranış olurdu) başka bir şey yapmak için kod).
Graeme
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.