In Bash weiß ich, dass es möglich ist, eine for
Schleife zu schreiben , in der eine Regelungsvariable i
über bestimmte Ganzzahlen iteriert. Zum Beispiel kann ich ein Bash-Shell-Skript schreiben, das die ganzen Zahlen zwischen 1 und 10 ausgibt:
#!/bin/bash
for i in {1..10}
do
echo $i
done
Ist es möglich, stattdessen über eine Schleifensteuerungsvariable zu iterieren, die eine Zeichenfolge ist, wenn ich eine Liste von Zeichenfolgen bereitstelle? Angenommen, ich habe eine Zeichenfolge fname
, die einen Dateinamen darstellt. Ich möchte für jeden Dateinamen eine Reihe von Befehlen aufrufen. Zum Beispiel möchte ich den Inhalt fname
eines Befehls wie folgt drucken :
#!/bin/bash
for fname in {"a.txt", "b.txt", "c.txt"}
do
echo $fname
done
Mit anderen Worten, sollte in der ersten Iteration fname
den Wert haben fname="a.txt"
, während in der zweiten Iteration fname
den Wert haben sollte fname="b.txt"
, und so weiter. Leider scheint die obige Syntax nicht ganz korrekt zu sein. Ich möchte die Ausgabe erhalten:
a.txt
b.txt
c.txt
aber wenn ich den obigen Code versuche, erhalte ich diese Ausgabe:
{a.txt,
b.txt,
c.txt}
Können Sie mir bitte helfen, die richtige Syntax zu bestimmen, damit ich den Wert / Inhalt der Variablen iterativ ändern kann fname
? Vielen Dank für Ihre Zeit.
{}
und das ,
s zu entfernen . Die Alternative besteht darin, die Leerzeichen zu entfernen. Also entweder "a.txt" "b.txt" "c.txt"
oder {"a.txt","b.txt","c.txt"}
. Aber ich bevorzuge {a..c}.txt
stattdessen.
{}
, Sie brauchen nichts, um eine (durch Leerzeichen begrenzte) Liste