2016-07-25 9 views
0

Angenommen, ich habe ein Verzeichnis mit einigen Unterverzeichnissen und einigen Dateien in denen ich gzipping.Bericht, welches Element in einer for-Schleife verarbeitet wird

Hier ist der Befehl, den ich verwenden:

for DATA in 9372161117 9372161118 9372161119 9372161153 9372161162 9372161163 9372161174 9372161189 9372161202 9372953017 9372953023 9372953024 9372953041 9372953049 9372953050 9372953053 9372953060 9374339086 9374339107 9374339128 9374339140 9374344040 9374344041 9374344138 9374345027 9374363112 9374363116 9374363117 9374363139 9374364101 9374365025 9374365109 9374365129 9374365160 9374682068 9374682069 9374682130 9374683008 9374683019 9374683020 9374683043 9374683044 9374683045 ; do 
    echo "Processing *.idat-files in folder ${DATA}..."; 
    gzip -v ${DATA}/*.idat; 
    echo "========================"; 
    echo ""; 
done 

Ich weiß, wie, welches Element in der Liste der DATA zu berichten, wird bearbeitet. Aber meine Frage: Kann ich damit eine Nummer bekommen? Die Rückmeldung würde also lauten: "Verarbeiten der Rufnummer 1: 9372161117", "Verarbeiten der Rufnummer 2: 9372161118" usw.

+2

einfach weiter verfolgen es mit einem Zähler. 'i = 0' und dann in der' for' -Schleife sag '((i ++))' – fedorqui

Antwort

1

Ja, Sie können. Halten Sie die Iterationszahl in i dann & Schritt drucken Sie es bei jeder Iteration:

i=1; 
for DATA in 9372161117 9372161118 9372161119 9372161153 9372161162 9372161163 9372161174 9372161189 9372161202 9372953017 9372953023 9372953024 9372953041 9372953049 9372953050 9372953053 9372953060 9374339086 9374339107 9374339128 9374339140 9374344040 9374344041 9374344138 9374345027 9374363112 9374363116 9374363117 9374363139 9374364101 9374365025 9374365109 9374365129 9374365160 9374682068 9374682069 9374682130 9374683008 9374683019 9374683020 9374683043 9374683044 9374683045 ; do 
    echo "Processing directory number ${i}: ${DATA} "; 
    echo "Processing *.idat-files in folder ${DATA}..."; 
    gzip -v ${DATA}/*.idat; 
    echo "========================"; 
    echo ""; 
    ((i++)); 
done 
+0

'i = 1;' ist falsch, dies wird versuchen, den Befehl 'i' mit den Parametern' = 'und' 1' auszuführen . Stattdessen müssen Sie "i = 1" sagen. Außerdem müssen am Ende jeder Zeile keine Semikolons verwendet werden. – fedorqui

+0

@fedorqui das 'i = 1' repariert, danke. Die Semikola dienen der Bequemlichkeit und der Verwendung des OP. –