In Bash weiß ich, dass es möglich ist, eine forSchleife 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 fnameeines 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 fnameden Wert haben fname="a.txt", während in der zweiten Iteration fnameden 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}.txtstattdessen.
{}, Sie brauchen nichts, um eine (durch Leerzeichen begrenzte) Liste