Передача файловых аргументов в bash - PullRequest
1 голос
/ 06 декабря 2010

Сценарий bash должен выполнять одно и то же; то есть; подача списка имен файлов один за другим через пробел в файл jar.

Вот часть сценария

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

то, что я ожидаю, что строка java <myjar.jar> file$i будет выглядеть при выполнении сценария, это

java <myjar.jar> file1 file2 file3 file4 file5

любая помощь? Спасибо!

Ответы [ 3 ]

3 голосов
/ 06 декабря 2010

Поскольку это bash, просто сделайте это:

java <myjar.jar> file{1..5}
1 голос
/ 06 декабря 2010

Одним из способов сделать это может быть использование автоматического расширения имени файла оболочки:

java myjar.jar file[1-5]

Выше предполагается, что файлы заранее существуют в файловой системе.Или вы можете сделать что-то вроде:

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

Если у вас большое количество элементов, команда seq поможет:

java myjar.jar `for i in $(seq 500); do echo file$i; done`
0 голосов
/ 06 декабря 2010
#!/bin/bash
declare -a listn
for n in $(seq $2 $3) ; do
    listn=("${listn[@]}" $n)
done

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

И вызовите сценарий с тремя аргументами:

./the_script myjar.jar 1 5

Первый аргумент - это имя вашего фляги, следующий - первое число в вашей последовательности, последний - последнее число.

...