¿Es posible formatear esta muestra?
for i in string1 string2 stringN
do
echo $i
done
a algo similar a esto:
for i in
string1
string2
stringN
do
echo $i
done
EDITAR: Perdón por la confusión, no me di cuenta de que había diferentes métodos para ejecutar el script: sh <scriptname>
versus bash <scriptname>
y también esta cosa que no puedo nombrar en este momento, #!/bin/sh
y #!/bin/bash
:)
Respuestas:
El uso de matrices en bash puede ayudar a la legibilidad: esta sintaxis de matriz permite espacios en blanco arbitrarios entre palabras.
fuente
sh
no es necesariamente Bash, y especialmente no está en Debian y Ubuntu.Puedes escapar del salto de línea con una barra invertida:
fuente
Puede escapar de las nuevas líneas antes / después de cada elemento que recorre:
O, para este simple ejemplo:
que tiene el mismo resultado.
Relacionado:
Variación usando una
bash
matriz:fuente
Si cambiar a
zsh
es una opción:fuente
Puede usar el
loop
comando, disponible aquí , así:o, si tiene una lista como archivo:
fuente
fuente
$list
cadena contiene caracteres globales de nombre de archivo (list='* * * *'
), el shell podría reemplazarlos por nombres de archivo coincidentes.Lo mismo, menos texto:
fuente
string1
etc. no son los valores literales que se mostrarán, son marcadores de posición, por lo que este enfoque no funciona.array ( … )
? solo hazlofor i in string{1..7}; do echo "$i"; done
; parprintf '%s\n' string{1..7}