Ist es möglich, dieses Beispiel zu formatieren:
for i in string1 string2 stringN
do
echo $i
done
zu etwas ähnlichem:
for i in
string1
string2
stringN
do
echo $i
done
EDIT: Entschuldigung für die Verwirrung, wusste nicht, dass es verschiedene Methoden zum Ausführen von Skripten gibt - sh <scriptname>
versus bash <scriptname>
und auch dieses Ding, das ich momentan nicht benennen kann - #!/bin/sh
und #!/bin/bash
:)
Antworten:
Die Verwendung von Arrays in Bash kann die Lesbarkeit verbessern: Diese Array-Syntax ermöglicht beliebige Leerzeichen zwischen Wörtern.
quelle
sh
nicht unbedingt Bash ist und insbesondere nicht unter Debian und Ubuntu.Sie können dem Zeilenumbruch mit einem Backslash entkommen:
quelle
Sie können die Zeilenumbrüche vor / nach jedem Element, über das Sie eine Schleife ausführen, umgehen:
Oder für dieses einfache Beispiel:
das hat das gleiche Ergebnis.
Verbunden:
Variation mit einem
bash
Array:quelle
Wenn ein Wechsel zu möglich
zsh
ist:quelle
Sie können den hier
loop
verfügbaren Befehl folgendermaßen verwenden :oder, wenn Sie eine Liste als Datei haben:
quelle
quelle
$list
Zeichenfolge Dateinamen-Globbing-Zeichen (list='* * * *'
) enthält, ersetzt die Shell diese möglicherweise durch übereinstimmende Dateinamen.Gleiches, weniger Text:
quelle
string1
usw. sind nicht die anzuzeigenden Literalwerte, sondern Platzhalter, sodass dieser Ansatz nicht funktioniert.array ( … )
? mach es einfachfor i in string{1..7}; do echo "$i"; done
; geradeprintf '%s\n' string{1..7}