script que para hacer generar ejecutar crear como comandos carpetas bash shell nested-loops

bash - que - script para crear carpetas linux



shell bash anidado para bucle (3)

Quiero escribir un bucle anidado para que funcione en el indicador de shell bash. anidado para bucle en el comando de una sola línea.

Por ejemplo,

for i in a b; do echo $i; done a b

En el ejemplo anterior, for loop se ejecuta en un solo comando de línea. Así he intentado el bucle anidado en el indicador de shell. No funciona. Como hacer esto. Por favor actualizeme en esto.


Esto no es un bucle anidado, solo un bucle simple. Y la versión anidada también funciona:

# for i in a b; do for j in a b; do echo $j; done; done a b a b


Una línea (semiconos necesarios):

for i in 0 1 2 3 4 5 6 7 8 9; do for j in 0 1 2 3 4 5 6 7 8 9; do echo "$i$j"; done; done

Formato para legibilidad (no se necesitan puntos y coma):

for i in 0 1 2 3 4 5 6 7 8 9 do for j in 0 1 2 3 4 5 6 7 8 9 do echo "$i$j" done done

Hay diferentes vistas sobre cómo se debe distribuir el código de shell en varias líneas; eso es lo que normalmente uso, a menos que coloque la siguiente operación en la misma línea que do (guardando dos líneas aquí).


#!/bin/bash # loop*figures.bash for i in 1 2 3 4 5 # First loop. do for j in $(seq 1 $i) do echo -n "*" done echo done echo # outputs # * # ** # *** # **** # ***** for i in 5 4 3 2 1 # First loop. do for j in $(seq -$i -1) do echo -n "*" done echo done # outputs # ***** # **** # *** # ** # * for i in 1 2 3 4 5 # First loop. do for k in $(seq -5 -$i) do echo -n '' '' done for j in $(seq 1 $i) do echo -n "* " done echo done echo # outputs # * # * * # * * * # * * * * # * * * * * for i in 1 2 3 4 5 # First loop. do for j in $(seq -5 -$i) do echo -n "* " done echo for k in $(seq 1 $i) do echo -n '' '' done done echo # outputs # * * * * * # * * * * # * * * # * * # * exit 0