2016-03-22 8 views
0

Ich möchte ein Shell-Skript in debian erstellen, dass:Bash Schwierigkeiten in für variable lenname

  1. ein Verzeichnis für jede Zahl von 1 bis 12 = d1, d2 erzeugt, d3, ..., d12.
  2. schafft die gleiche Text-Datei in jedem Verzeichnis
  3. ändert eine Zeichenkette in der Textdatei
  4. Downloads von Dateien wget

(Erstellen d1 verwendet wird; kopieren links.txt und benennen d1.txt; Änderung jede Zahl von 0 bis 99 zu 1. Dann für d2, benennen Sie es in d2.txt um, ändern Sie jede Zahl zu 2 ... dasselbe für die 12).

#!/bin/bash 
START=1 
END=12 
for ((i=START; i<=END; i++)) 
do 
    mkdir d'$i' 
    cp /home/user/script/links.txt /home/user/script/d'$i'.txt 
    grep -rli '([0-99])' /home/user/script/d'$i'.txt | xargs [email protected] sed -i 's/[0-99]/'$i'/g' @ 
    wget -i /home/user/script/d'$i'/d'$i'.txt 
done 

Was muss ich ändern, damit es funktioniert?

+2

Du solltest * erklären was nicht funktioniert *. –

Antwort

1

Einfache Anführungszeichen verhindern die Variablensubstitution in Strings. Sie sollten stattdessen doppelte Anführungszeichen verwenden. Auch [0-99] macht nicht, was Sie denken. Die Zeichenklassen passen immer nur auf ein einzelnes Zeichen, so dass Sie nur nach den Zeichen 0-9 suchen. Ich denke das sollte tun was du willst:

#!/bin/bash 
START=1 
END=12 
for ((i=START; i<=END; i++)) 
do 
    mkdir d"$i" 
    sed -r 's/([0-9]|[1-9][0-9])/'$i'/g' /home/user/script/links.txt > "/home/user/script/d$i/d$i.txt" 
    wget -i "/home/user/script/d$i/d$i.txt" 
done 
+0

Ich habe keine doppelten Anführungszeichen verwendet und habe das Verzeichnis erstellt und nicht verwendet! Vielen Dank! – Kaka

+0

Seltsam, die [0-99] funktioniert bei mir für den 0-12 Bereich. – Kaka

+0

Es wird irgendwie funktionieren. Es passt alles an, in dem die Zeichen 0 bis 9 enthalten sind. Das könnte entweder 0, 50, 99 oder sogar 9999999 sein. –