如何将shell脚本的整个参数列表传递给程序?
例如,如果我有一个名为JavaFoo的java程序,它会接受任意数量的参数,这应该在我的脚本中调用。
如何将脚本的参数传递给java程序?
答案 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}}中不包含脚本本身的名称。