Ich versuche, alle Dateien in bestimmten Unterverzeichnissen eines Verzeichnisses in meinem Bash-Skript aufzulisten. Hier ist was ich versucht habe.Erweitern Sie einen Teil des Pfades in Bash-Skript
root_dir="/home/shaf/data/"
sub_dirs_prefixes=('ab' 'bp' 'cd' 'cn' 'll' 'mr' 'mb' 'nb' 'nh' 'nw' 'oh' 'st' 'wh')
ls "$root_dir"{$(IFS=,; echo "${sub_dirs_prefixes[*]}")}"rrc/"
Bitte beachten Sie, dass ich will nicht Wert in $root_dir
gespeichert erweitern, wie es Leerzeichen enthalten kann, aber ich will Unterpfad in {enthalten erweitern}, die eine durch Kommata getrennte Zeichenfolge von Inhalten $sub_dirs_prefixes
ist. Ich habe Unterverzeichnisse Präfixe in einer Array-Variablen, $sub_dirs_prefixes
, gespeichert, weil ich sie später für etwas anderes verwenden muss.
ich folgende Fehler bekommen:
ls: cannot access /home/shaf/data/{ab,bp,cd,cn,ll,mr,mb,nb,nh,nw,oh,st,wh}rrc/
Wenn ich den Pfad in Fehlermeldung kopieren und ls
von der Kommandozeile ausführen, es tut Anzeigeinhalt von börsennotierten Unterverzeichnissen.
Die Klammererweiterung erfolgt vor der Variablenerweiterung, dies ist also nicht in einem Durchgang möglich. Sie könnten mit all den Auswirkungen auf die Sicherheit und Zuverlässigkeit, die es gibt, "überprüfen", aber es wäre besser, wenn Sie eine Schleifen- oder Array-Ersetzung verwenden würden. –