GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es el propósito de la palabra clave "do" en Bash For Loops?

¿Cuál es el propósito de do palabra clave en Bash for sintaxis de bucle? Para mí, se siente redundante.

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

¿Por qué la sintaxis no es así?

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

Estoy seguro de que llenar un propósito. Solo quiero aprender.

Respuesta aceptada:

Tenga en cuenta que esa sintaxis se hereda del shell Bourne.

Después del nombre de la variable, puede tener in tener la lista de elementos dada explícitamente, o do , para recorrer los parámetros posicionales.

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

O

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

Tener el do en ambos casos (aunque no sea estrictamente necesario en el primero) hace que la sintaxis sea más consistente. También es consistente con while /until bucles donde do es necesario.

while
  cmd1
  cmd2
do
  cmd3
  cmd4
done

Necesitas el do para decir dónde está la lista de condiciones terminan los comandos.

Tenga en cuenta que el shell Bourne no admitía for i; do . Esa sintaxis tampoco era POSIX hasta la edición de 2016 del estándar (for i do siempre ha sido POSIX; ver el error relacionado con el grupo de Austin).

zsh tiene algunas formas abreviadas como:

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

O soporte para más de una variable:

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

(aunque no puedes usar in o do como nombre de variable en lugar de j arriba).

Incluso si rara vez se documenta, la mayoría de los shells tipo Bourne (Bourne, ksh, bash, zsh, no ash ni yash ) también admite:

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

El shell de Bourne, ksh y zsh (pero no bash ) también admite:

for i { echo "$i"; }

Mientras bash , ksh y zsh (pero no el shell de Bourne) soporte:

for i; { echo "$i"; }

Todos (Bourne, bash , ksh , zsh ) apoyo:

for i
{ echo "$i";}

ksh93 , bash , zsh apoyo:

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

Linux
  1. Consejos de Bash para el día a día en la línea de comandos

  2. Dos excelentes usos para el comando cp:accesos directos de Bash

  3. ¿Obtener páginas man individuales para los comandos integrados de Bash?

  4. ¿La razón por la que Bash Shell no le advierte sobre el desbordamiento aritmético, etc.?

  5. Bash Echo ¿La línea de comando se ejecutó en la propia línea de comando (no en un script)?

Bash For Loops con ejemplos

Bash For Loop:la guía más práctica

El Bash FOR Loop explicado y simplificado

¿Cómo cambio el directorio en Git Bash con Git para Windows?

Alcance variable para scripts y funciones bash shell en el script

¿Cómo cambiar la resolución de Bash para una máquina virtual Debian?