Ist es möglich, dieses Muster zu formatieren:
for i in string1 string2 stringN
do
echo $i
done
zu etwas Ähnlichem wie diesem:
for i in
string1
string2
stringN
do
echo $i
done
EDIT: Sorry für die Verwirrung, wusste nicht, dass es verschiedene Methoden der Ausführung von Skripten gibt - sh <scriptname>
versus bash <scriptname>
und auch diese Sache, die ich im Moment nicht benennen kann - #!/bin/sh
und #!/bin/bash
:)
Die Verwendung von Arrays in der Bash kann die Lesbarkeit verbessern: Diese Array-Syntax erlaubt beliebige Leerzeichen zwischen Wörtern.
strings=(
string1
string2
"string with spaces"
stringN
)
for i in "${strings[@]}"; do
echo "$i"
done
Sie können den Zeilenumbruch mit einem Backslash umgehen:
$ for i in \
> hello \
> world
> do
> echo $i
> done
hello
world
$
Sie können die Zeilenumbrüche vor/nach jedem Element, über das Sie eine Schleife ziehen, auslassen:
for i in \
string1 \
string2 \
stringN
do
printf '%s\n' "$i"
done
Oder, für dieses einfache Beispiel:
printf '%s\n' string1 string2 stringN
was zum gleichen Ergebnis führt.
Verwandt:
Variante mit einem bash
-Array:
strings=(
string1
string2
stringN
)
printf '%s\n' "${strings[@]}"