2017-01-24 3 views
1

Ich versuche, ein Bash-Skript für eine Hausaufgabe zu schreiben, wo ich auf einige Dateien in einem Quellordner zugreifen muss, alle Kommentare aus ihnen entfernen und die unkommentierten Dateien (oder eine Kopie) senden mein aktueller Versuch) in einen Zielordner, hier ist:Erstellen eines Arrays von Dateien in einem Unterordner

#!/bin/bash 
destination="$1" 
source="$2" 
mkdir "$destination" 
files=(${$("$source"/*)}) 
for file in "${files[@]}" 
do 
    grep -E -v "^[[:space:]]*[//]" "$file">> "/$destination/$file" 
done 

das Problem scheint, dass ich richtig die Array-Elemente zu schaffen bin nicht zu, ich will das Array mit den Namen der Dateien im Quellordner enthält, kann irgendjemand weist mich auf die richtige Art und Weise an, dies zu tun (vorzugsweise ohne die ganze Übung zu lösen, da es ja Hausaufgaben sind)/

Antwort

4

Ändern Sie diese

files=(${$("$source"/*)}) 

zu

files=("$source"/*) # grab name of all files under $source dir and store it in array 
+0

Leider geben sowohl diese Lösung als auch die folgende die Zeichenfolge source/file_1 zurück, während ich die Zeichenkette file_1 brauche – Nashed

2

Sie brauchen eigentlich nicht das Array überhaupt, und für eine große Anzahl von Dateien passend ist es effizienter, als auch über das Muster direkt iterieren.

for file in "$source"/*; do 
Verwandte Themen