
for i in $(find template -type f | sed 's/^template//') ; do
diff -wBNu {,./template}$i
Ich verstehe die For-Schleife, die alle Dateien im template
Verzeichnis durchläuft und dann alle Sätze, die mit Vorlage beginnen, durch ersetzt ''
. Ist dieses Verständnis richtig? Was macht das diff
hier?
Antwort1
Die Klammern führen eine „Klammernerweiterung“ der Shell aus. Die Konstruktion {,./template}$i erzeugt ein Wortpaar, das beide den Wert von $i enthält, wobei letzterem jedoch ./template vorangestellt ist. Versuchen Sie den Befehl
echo foo{,bar}
an der Shell-Eingabeaufforderung, um es in Aktion zu sehen. Dies ist im Bash-Handbuch unter „Klammernerweiterung“ dokumentiert.