Ich möchte ein sehr einfaches Skript schreiben, das die Dateinamen von * TXT-Dateien im aktuellen Verzeichnis zurückgibt. Ich schrieb den folgenden Code:Schleife, die Dateinamen drucken sollte, gibt leere Zeilen zurück
#!/bin/bash
FILES=$(ls *txt)
for FILE in $FILES
do
echo "$File"
done
Die Ausgabe des Skripts sind 5 Leerzeilen anstelle der Namen der 5 * .txt-Dateien im Directoy.
Ich glaube es sollte 'echo "$ FILE" sein', nicht 'echo "$ File"' . Das würde die 5 Leerzeilen erklären. Siehe auch [Listen Sie alle Dateien in einem Verzeichnis mit einer bestimmten Erweiterung auf] (https://stackoverflow.com/q/18823609/608639), [Durchsuchen Sie alle Dateien mit einer bestimmten Erweiterung] (https://stackoverflow.com/ q/14505047/608639), [Wie führe ich eine Aktion für alle Dateien mit einer bestimmten Erweiterung in Unterordnern durch?] (https://unix.stackexchange.com/q/50313/56041), [Dateien rekursiv mit einem bestimmten suchen Erweiterung] (https://stackoverflow.com/q/25693638/608639), usw. – jww
'Datei' ist nie in Ihrem Code festgelegt, aber abgesehen davon ist Ihre Schleife sowieso stark beschädigt. Siehe http://mywiki.wooledge.org/BashPitfalls#for_i_in_.24.28ls_.2A.mp3.29. – melpomene
Mögliches Duplikat von [Durchlaufen Sie alle Dateien mit einer bestimmten Erweiterung] (https://stackoverflow.com/questions/14505047/loop-through-all-the-files-with-a-specific-extension) – jww