具有可变长度参数的shell脚本

时间:2012-05-18 16:47:26

标签: unix command-line-arguments

如何将shell脚本的整个参数列表传递给程序?

例如,如果我有一个名为JavaFoo的java程序,它会接受任意数量的参数,这应该在我的脚本中调用。

如何将脚本的参数传递给java程序?

1 个答案:

答案 0 :(得分:1)

在Bash中:

#!/usr/bin/env bash
java /path/to/JavaFoo "$@"

传递所有参数,单独引用传递给Bash脚本本身。 也适用于Dash,但我不知道其他与Bourne兼容的shell。

假设您要将除第一个参数之外的所有参数传递给Java程序,请使用shift,如下所示:

#!/usr/bin/env bash
shift
java /path/to/JavaFoo "$@"

如果需要,可以在传递参数之前使用更多shift实例来删除更多参数。

所以说你调用shell脚本(myscript)如下:

./myscript a b c

shift将摆脱a。再添加一个shift,它也会删除b。尽管您可以在许多shell中将"$@"作为$0访问,但{{1}}中不包含脚本本身的名称。