Unix 具有可变长度参数的shell脚本
如何将shell脚本的整个参数列表传递给程序 例如,如果我有一个名为JavaFoo的java程序,它可以接受任意数量的参数,这应该在我的脚本中调用 如何将脚本的参数传递给java程序?在Bash中: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程序,请使用如
#!/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程序?现在就完全有意义了。谢谢