GNU/Linux >> Znalost Linux >  >> Linux

Účel klíčového slova „dělat“ v Bash For Loops?

Jaký je účel until klíčové slovo v Bash for syntaxe smyčky? Připadá mi to zbytečné.

for i in `seq 1 2`; do echo "hi"; done

Proč není syntaxe taková?

for i in `seq 1 2`; echo "hi"; done

Jsem si jistý, že to dělá naplnit účel. Chci se jen učit.

Přijatá odpověď:

Všimněte si, že tato syntaxe je zděděna z Bourne shellu.

Za názvem proměnné můžete mít buď in Chcete-li mít seznam prvků výslovně uveden, nebo until , pro zacyklení přes poziční parametry.

for i in 1 2 3
do
  echo "$i"
done

Nebo

set 1 2 3
for i do
  echo "$i"
done

Pomocí until v obou případech (i když to v prvním není nezbytně nutné) umožňuje konzistentnější syntaxi. Je také v souladu s while /until smyčky, kde until je nutné.

while
  cmd1
  cmd2
do
  cmd3
  cmd4
done

Potřebujete until zjistit, kde je seznam stavu příkazy end.

Všimněte si, že Bourne shell nepodporoval for i; do . Tato syntaxe také nebyla POSIX až do vydání standardu z roku 2016 (for i do byl vždy POSIX; viz související chyba skupiny Austin).

zsh má několik zkrácených tvarů jako:

for i in 1 2 3; echo $i
for i (1 2 3) echo $i
for ((i=1;i<=3;i++)) echo $i

Nebo podpora více než jedné proměnné:

for i j (1 a 2 b) echo $i $j

(ačkoli nemůžete použít in nebo until jako název proměnné namísto j výše).

I když je to zřídka zdokumentováno, většina mušlí podobných Bourneovi (Bourne, ksh, bash, zsh, nikoli ash ani yash ) také podporuje:

for i in 1 2 3; { echo "$i";}

Bourne shell, ksh a zsh (ale ne bash ) také podporuje:

for i { echo "$i"; }

Zatímco bash , ksh a zsh (ale ne Bourne shell) podpora:

for i; { echo "$i"; }

Vše (Bourne, bash , ksh , zsh ) podpora:

for i
{ echo "$i";}

ksh93 , bash , zsh podpora:

for ((i=1;i<=3;i++)) { echo "$i"; }

Linux
  1. Bash tipy pro každý den na příkazovém řádku

  2. Dvě skvělá použití pro příkaz cp:Bash zkratky

  3. Skriptování v Linuxu:3 postupy pro smyčky while v Bash

  1. Odůvodnění Bash Shell vás nevaruje před aritmetickým přetečením atd.?

  2. Udržujeme vás ve smyčce – příklady opakování pro, Zatímco, dokud

  3. Tisk data pro pondělí aktuálního týdne (v bash)

  1. Bash ignoruje chybu pro konkrétní příkaz

  2. Jak změním adresář v Git Bash pomocí Git pro Windows?

  3. Variabilní rozsah pro skripty bash shell a funkce ve skriptu