Специальная переменная $ @
представляет все аргументы командной строки, предоставленные сценарию.
Цикл for
проходит через каждый из них и каждый раз выполняет файл jar. Вы можете сократить сценарий до:
for f
do
java -Xmx1000m -jar /Users/myprog/myprog.jar "$f"
done
, поскольку по умолчанию для
используется $ @
.
Вы должны заключить в кавычки $ f в конце java команда, если в аргументах есть пробелы.
Я не уверен, что понимаю ваш вопрос, поскольку похоже, что ваш скрипт не использует стандартный ввод. Специальный параметр $ @ расширяется до позиционных параметров, переданных в качестве аргументов в argv. Это работает так же, как если бы вы вызывали скрипт прямо из оболочки следующим образом:
$ cat >test
for f in "$@"
do
echo $f
done
$ chmod 755 test
$ ./test a b c
a
b
c
Если вы хотите получить аргументы от stdin, вы можете сделать что-то вроде этого:
$ cat >test2
for f in $(cat)
do
echo $f
done
$ chmod 755 test2
$ ./test2 <<EOF
> a b c
> EOF
a
b
c