У меня есть сценарий, что я хочу принять любое количество параметров командной строки.
До сих пор я имею
if [ -O $1 ] ; then echo "you are the owner of $1" else echo "you are not the owner of $1" fi
Очевидно, если бы я хотел, чтобы сценарий только принял один аргумент, то это работало бы, но что работало бы на КАКОЕ-ЛИБО количество аргументов.
ex. ./script f f1 f2 f3
"$" не решает его проблему "НИКАКОГО количества аргументов". существует предел в том, какой длины командная строка может быть (http://www.in-ulm.de/~mascheck/various/argmax/). лучший способ читать в "неограниченных аргументах" через STDIN:
prg_which_creates_arguments | while read a; do \
echo "do something with $a"; \
done
просто создайте аргументы и передайте их по каналу один за другим в коде, который делает что-то с ними.
script "arg with spaces"
. Это может или не может относиться к Вашей ситуации. После того как Вы сделаны, поместите doublequotes вокруг$@
и$item
. – wfaulk 08.10.2009, 03:15