有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

脚本如何将参数从包装器外壳脚本传递到Java应用程序?

我想在命令行上运行我正在创建的Java程序(linux和mac)。我不想一直输入“java”和参数,所以我正在考虑创建包装器脚本。最好的方法是什么,这样他们就可以在任何地方工作?我也希望能够传递论点。我想用“shift”来做这个(去掉第一个参数)

有没有更好的方法不用脚本就能做到这一点?也许可以制作一个不需要通过“java”命令调用的可执行文件


共 (2) 个答案

  1. # 1 楼答案

    你可以create a shell scriptaccepts arguments。在shell脚本中,它将如下所示:

    java YourApp $1 $2
    

    在本例中,YourApp接受两个参数。如果您的shell脚本名为app.sh,您可以这样执行它:-

    ./app.sh FirstArgument SecondArgument 
    
  2. # 2 楼答案

    假设您使用的是与Bourne shell兼容的shell;e、 如sh、bash、ksh等,以下包装器将把所有命令行参数传递给java命令:

    #!/bin/sh
    OPTS=... 
    java $OPTS com.example.YourApp "$@"
    

    $@扩展到shell脚本的其余参数,在其周围加引号会导致单独引用这些参数,以便以下内容将单个参数传递给Java:

    $ wrapper "/home/person/Stupid Directory Name/foo.txt" 
    

    如果包装器脚本中的"$@"周围没有双引号,Java将收到上述三个参数


    请注意,这不适用于"$*"。根据bash手动输入:

    "$*" is equivalent to "$1c$2c...", where c is the first character of the value of the IFS variable.

    换句话说,所有shell参数都将被连接到Java应用程序的单个命令参数中,而忽略原始单词边界

    请参阅bashsh手册。。。或者POSIX外壳规范。。。有关shell如何处理引用的更多信息