einfach einen einfachen Shell-Skript Witting und wenig verwirrt:Bash for-Schleife mit Wildcards und versteckten Dateien
Hier ist mein Skript:
% for f in $FILES; do echo "Processing $f file.."; done
Der Befehl:
ls -la | grep bash
produziert:
% ls -a | grep bash
.bash_from_cshrc
.bash_history
.bash_profile
.bashrc
Wenn
FILES=".bash*"
Ich bekomme die gleichen Ergebnisse (unterschiedliche Formatierung) wie ls -a. Allerdings, wenn
FILES="*bash*"
ich diese Ausgabe:
Processing *bash* file..
Dies ist nicht die erwartete Leistung und nicht das, was ich erwarte. Darf ich am Anfang des Dateinamens keine Wildcard haben? Ist der . am Anfang des Dateinamens "special" irgendwie?
Einstellung
FILES="bash*"
auch nicht funktioniert.
Wie Nos sagte unten, werden Sie wahrscheinlich ein Bash-Flag verwenden möchten, um das Verhalten zu ändern. (shopt -s dotglob) –