我有一个脚本,想要接受任意数量的命令行参数。
到目前为止
如果 [ -O $1 ] ; 那么 echo“您是$1的所有者” 别的 echo“你不是$1的所有者” 菲
显然,如果我希望脚本只接受一个参数,那么这就可以起作用,但是对于任意数量的参数,这都可以起作用。
例如 ./script f f1 f2 f3
答案1
实现您想要的操作的一种可能方法是$@
,它是传入的所有参数的数组。
for item in "$@"; do
if [ -O "$item" ]; then
echo "you are the owner of $item"
else
echo "you are not the owner of $item"
fi
done
答案2
嗯,这取决于你到底想做什么,但请查看$*
、$@
和shift
。
答案3
“$@” 不能解决“任意数量的参数”的问题。命令行的长度是有限制的(http://www.in-ulm.de/~mascheck/various/argmax/)读取“无限参数”的更好方法是通过 STDIN:
prg_which_creates_arguments | while read a; do \
echo "do something with $a"; \
done
只需创建参数,然后在对它们进行某些操作的代码中将它们一个接一个地传输出去。
答案4
这是你想要的脚本
while test -n "$1"; do
echo $1
shift
done
如果你输入:
script arg1 arg2 arg3
你的输出将是
arg1
arg2
arg3