2010-12-05 5 views
1

Das Bash-Skript soll eins und eins machen; dh; Füttern der Liste der Dateinamen nacheinander durch ein Leerzeichen zu der JAR-Datei getrennt.Dateiargumente in einer Bash übergeben

Hier ist ein Teil des Skripts

for(i=1;i<=5;i++) do 
java <myjar.jar>file$i 
done 

, was ich erwarten, dass die java <myjar.jar> file$i Linie aussehen während der Ausführung das Skript

ist
java <myjar.jar> file1 file2 file3 file4 file5 

jede mögliche Hilfe? Vielen Dank!

Antwort

3

Da es bash ist, genau dies zu tun:

java <myjar.jar> file{1..5} 
+0

Vielen Dank ... es funktioniert – deepseefan

1

Eine Möglichkeit, dies zu tun könnte sein, die automatische Shell Dateinamen Expansion zu nutzen:

java myjar.jar file[1-5] 

Die oben geht davon aus, dass die Dateien im Dateisystem existieren vorher. Oder können Sie so etwas wie:

java myjar.jar `for i in 1 2 3 4 5; do echo file$i; done` 

Wenn Sie eine große Anzahl von Elementen haben, die seq Befehl helfen:

java myjar.jar `for i in $(seq 500); do echo file$i; done` 
+0

Normalerweise werde ich sehr groß/riesig; also der erste ist ein vernünftiger Weg zu gehen, denke ich .... Vielen Dank! – deepseefan

+0

@deepseefan: Siehe meine aktualisierte Antwort, die auch funktioniert, wenn Sie mehr als 9 Dateien haben. –

+0

Danke Greg, jetzt funktioniert es sogar für mehr als 9 Dateien;) – deepseefan

0
#!/bin/bash 
declare -a listn 
for n in $(seq $2 $3) ; do 
    listn=("${listn[@]}" $n) 
done 

java "$1" "${listn[@]}" 

Und rufen Sie das Skript mit drei Argumenten:

./the_script myjar.jar 1 5 

Das erste Argument ist Ihr Jar-Name, der nächste ist die erste Nummer in Ihrer Sequenz, der letzte ist die endgültige Nummer.

Verwandte Themen