GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Der Zweck des Schlüsselworts „do“ in Bash-For-Schleifen?

Was ist der Zweck von do Schlüsselwort in Bash for Schleifensyntax? Für mich fühlt es sich überflüssig an.

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

Warum ist die Syntax nicht so?

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

Ich bin mir sicher, dass es das tut einen Zweck erfüllen. Ich möchte nur lernen.

Akzeptierte Antwort:

Beachten Sie, dass diese Syntax von der Bourne-Shell geerbt wird.

Nach dem Variablennamen können Sie entweder in haben um die Liste der Elemente explizit angegeben zu bekommen, oder do , um die Positionsparameter zu durchlaufen.

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

Oder

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

Das do haben in beiden Fällen (auch wenn es im ersten nicht unbedingt notwendig ist) sorgt für eine konsistentere Syntax. Es stimmt auch mit while überein /until Schleifen, wo der do ist erforderlich.

while
  cmd1
  cmd2
do
  cmd3
  cmd4
done

Sie brauchen das do zu sagen, wo die Liste der Zustand Befehle Ende.

Beachten Sie, dass die Bourne-Shell for i; do . Diese Syntax war bis zur Ausgabe 2016 des Standards auch nicht POSIX (for i do war schon immer POSIX; siehe den verwandten Bug der Austin-Gruppe).

zsh hat einige Kurzformen wie:

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

Oder Unterstützung für mehr als eine Variable:

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

(obwohl Sie in nicht verwenden können oder do als Variablenname anstelle von j oben).

Auch wenn selten dokumentiert, die meisten Bourne-ähnlichen Shells (Bourne, ksh, bash, zsh, nicht ash noch yash ) unterstützen auch:

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

Die Bourne-Shell, ksh und zsh (aber nicht bash ) unterstützen auch:

for i { echo "$i"; }

Während bash , ksh und zsh (aber nicht die Bourne-Shell) Unterstützung:

for i; { echo "$i"; }

Alle (Bourne, bash , ksh , zsh ) Unterstützung:

for i
{ echo "$i";}

ksh93 , bash , zsh Unterstützung:

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

Linux
  1. Zwei großartige Anwendungen für den cp-Befehl:Bash-Shortcuts

  2. Linux-Scripting:3 Anleitungen für While-Schleifen in Bash

  3. Ist es möglich, dass die Bash-Vervollständigung die Alternativen durchläuft?

  4. Bash Echo Die Befehlszeile wird in der Befehlszeile selbst ausgeführt (nicht in einem Skript)?

  5. Variablenbereich für Bash-Shell-Skripte und Funktionen im Skript

Bash For-Schleifen mit Beispielen

Bash For Loop – Die praktischste Anleitung

Die Bash FOR-Schleife erklärt und vereinfacht

Wie kann ich die Anzahl der Zeichen in einer Bash-Variablen zählen?

Wie ändere ich das Verzeichnis in Git Bash mit Git für Windows?

Was ist die Verwendung von $ # in Bash