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

Unix 具有可变长度参数的shell脚本,unix,command-line-arguments,Unix,Command Line Arguments,如何将shell脚本的整个参数列表传递给程序 例如,如果我有一个名为JavaFoo的java程序,它可以接受任意数量的参数,这应该在我的脚本中调用 如何将脚本的参数传递给java程序?在Bash中: #!/usr/bin/env bash java /path/to/JavaFoo "$@" 将所有单独引用的参数传递给Bash脚本本身。 Dash也可以使用,但我不知道其他与Bourne兼容的shell 假设您想将除第一个参数以外的所有参数传递给shell脚本,并将其传递给Java程序,请使用如

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

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

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

在Bash中:

#!/usr/bin/env bash
java /path/to/JavaFoo "$@"
将所有单独引用的参数传递给Bash脚本本身。 Dash也可以使用,但我不知道其他与Bourne兼容的shell

假设您想将除第一个参数以外的所有参数传递给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
的形式访问它。

在Bash中:

#!/usr/bin/env bash
java /path/to/JavaFoo "$@"
将所有单独引用的参数传递给Bash脚本本身。 Dash也可以使用,但我不知道其他与Bourne兼容的shell

假设您想将除第一个参数以外的所有参数传递给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
的形式访问它。

是的,添加this对我来说很有用:
java JavaFoo“$@”
。谢谢,对不起。我假设Java文件有一个hashbang:)在这种特殊情况下,
shift
会做什么?比如说,如果我用下面的命令调用脚本
/myscriptabc
,那么脚本将去掉0参数(即“myscript”),只将“abc”传递给我的java程序?现在就完全有意义了。谢谢,添加this对我有用:
javajavafoo“$@”
。谢谢,对不起。我假设Java文件有一个hashbang:)在这种特殊情况下,
shift
会做什么?比如说,如果我用下面的命令调用脚本
/myscriptabc
,那么脚本将去掉0参数(即“myscript”),只将“abc”传递给我的java程序?现在就完全有意义了。谢谢