Bash'de bir döngüden nasıl çıkılır?


155

Metni işlemek için bir süre döngüsü gerektirebilecek bir Bash betiği yazmak istiyorum.

Örneğin, C'de bir while döngüsü:

int done = 0;
while(1) {
  ...
  if(done) break;
}

Buna eşdeğer bir Bash betiği yazmak istiyorum. Ama genellikle kullandığım ve okuduğum tüm klasik örneklerin gösterdiği gibi, şudur:

while read something;
do
...
done

C de iyi tanımlanmış ve yaygın olarak kullanılan while(1){}ve nasıl yapılacağı konusunda hiçbir yardım break;sunmuyor ve stdin için veri okumam gerekmiyor.

Biri bana yukarıdaki C kodunun Bash eşdeğeri konusunda yardımcı olabilir mi?

Yanıtlar:


198

O kadar da farklı değil bash.

workdone=0
while : ; do
  ...
  if [ "$workdone" -ne 0 ]; then
      break
  fi
done

:işlemsiz komuttur; çıkış durumu her zaman 0'dır, bu nedenle döngü workdonesıfır olmayan bir değer verilene kadar çalışır .


Döngüden workdoneçıkmak için değerini ayarlayıp test etmenin birçok yolu vardır ; yukarıda gösterdiğim herhangi bir POSIX uyumlu kabukta çalışmalıdır.


60
while true ; do
    ...
    if [ something ]; then
        break
    fi
done
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.