GNU/Linux >> Linux Esercitazione >  >> Linux

Lo scopo della parola chiave "do" in Bash For Loops?

Qual è lo scopo di do parola chiave in Bash for sintassi del ciclo? Per me sembra ridondante.

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

Perché la sintassi non è così?

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

Sono sicuro che lo fa riempire uno scopo. Voglio solo imparare.

Risposta accettata:

Nota che quella sintassi è ereditata dalla shell Bourne.

Dopo il nome della variabile, puoi avere sia in per avere l'elenco di elementi fornito in modo esplicito, o do , per scorrere i parametri posizionali.

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

Oppure

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

Avere il do in entrambi i casi (anche se nel primo non è strettamente necessario) rende più coerente la sintassi. È anche coerente con il while /until loop in cui do è necessario.

while
  cmd1
  cmd2
do
  cmd3
  cmd4
done

Hai bisogno di do per dire dove si trova l'elenco delle condizioni i comandi finiscono.

Si noti che la shell Bourne non supportava for i; do . Anche quella sintassi non era POSIX fino all'edizione 2016 dello standard (for i do è sempre stato POSIX; vedere il relativo bug del gruppo Austin).

zsh ha alcune forme abbreviate come:

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

O supporto per più di una variabile:

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

(anche se non puoi usare in o do come nome della variabile al posto di j sopra).

Anche se raramente documentate, la maggior parte delle shell simili a Bourne (Bourne, ksh, bash, zsh, non ashyash ) supportano anche:

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

La shell Bourne, ksh e zsh (ma non bash ) supportano anche:

for i { echo "$i"; }

Mentre bash , ksh e zsh (ma non la shell Bourne) supporto:

for i; { echo "$i"; }

Tutti (Bourne, bash , ksh , zsh ) supporto:

for i
{ echo "$i";}

ksh93 , bash , zsh supporto:

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

Linux
  1. Lo scopo di .bashrc e come funziona?

  2. Il motivo per cui Bash Shell non ti avverte di overflow aritmetico ecc.?

  3. Bash Echo La riga di comando eseguita sulla riga di comando stessa (non in uno script)?

  4. Bash che ignora l'errore per un particolare comando

  5. Come cambio la directory in Git Bash con Git per Windows?

Suggerimenti Bash per tutti i giorni dalla riga di comando

Bash For Loops con esempi

Bash For Loop – La guida più pratica

Il ciclo Bash FOR spiegato e semplificato

Stampa la data per il lunedì della settimana corrente (in bash)

Come posso contare il numero di caratteri in una variabile Bash