当前位置: 首页 > 面试题库 >

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

谭锐藻
2023-03-14
问题内容

我想运行在命令行(Linux和Mac)上创建的Java程序。我不想一直输入“
java”和参数,因此我正在考虑创建包装器脚本。使它们无处不在的最佳方法是什么?我也希望能够传递参数。我当时正在考虑使用“
shift”执行此操作(删除第一个参数)。

有没有一种更好的方法可以完全不使用脚本呢?也许制作一个不需要通过“ java”命令调用的可执行文件


问题答案:

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

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

$@周围引起的参数为shell脚本其余的参数,并把报价膨胀进行单独报价,这样下将传递一个参数到Java:

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

"$@"在包装脚本中没有双引号的情况下,Java将收到上述三个参数。

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

"$*" 等价于"$1c$2c...",其中cIFS变量值的第一个字符。

换句话说,所有shell参数将被合并为Java应用程序的单个命令参数,而忽略原始单词边界。

有关外壳如何处理引用的更多信息,请参考bashsh手册…或POSIX Shell规范…。



 类似资料:
  • 问题内容: 我有一个调用file.sql的shell脚本 我正在寻找一种将一些参数传递给我的file.sql的方法。 如果我没有将具有某个值的变量传递给sql脚本,则将不得不使用SELECT语句创建多个.sql文件,并且所有更改将只需要几个字即可。 我的shell脚本调用file.sql: 这就是我的file.sql的样子: 我可以修改我的shell脚本,以便它传递变量名吗? 即:模型=“建筑”,

  • 问题内容: 我试图运行在运行时调用shell脚本的Java代码。 当我在终端中运行脚本时,我正在将参数传递给脚本 码: Java代码: 如何在Java代码中为脚本传递参数? 问题答案: 在Java的最新版本中创建进程的首选方法是使用类,这使得此操作非常简单: 但是,如果您确实出于某种原因想要/需要使用该方法,则可以使用该方法的重载版本,这些版本允许显式指定参数:

  • 问题内容: 我有一个Linux bash脚本“ myshell”。我希望它读取两个日期作为参数,例如:。我是Java程序员,但不知道如何编写脚本来完成此任务。 脚本的其余部分如下所示: 问题答案: 您在脚本中使用,例如

  • 问题内容: 我有一个名为的MySQL脚本文件,其中包含: 我在MySQL控制台中,如何将参数传递给脚本?这不会转发变量: 问题答案: 您可以使用用户变量来实现您描述的行为。在将变量用作模式标识符而不是数据值时,必须使用准备好的语句,以便可以动态组成查询。 : 调用为

  • 问题内容: 我正在这样运行我的JavaFX应用程序: 类扩展。在特殊的FX线程中启动JavaFX窗口,但是在我的main方法中,我什至没有类的实例。 如何将非字符串参数(在我的情况下为 控制器 )传递给实例?它是有缺陷的设计吗? 问题答案: 通常,除了传递给您的主程序的程序参数外,无需将参数传递给主应用程序。想要这样做的唯一原因是创建一个可重用的对象。但这并不需要是可重用的,因为这是组装您的应用程

  • 我有这样一个shell脚本(在/usr/local/bin/esm script/import master.php中): 现在我通过这样的PHP脚本调用它: 但是,当我运行PHP代码时,我会在浏览器上看到以下消息: 我不是一个编写shell脚本的人,所以我不知道我是否遗漏了什么。 我检查了带有sql文件的文件夹是否具有正确的权限(775)和数据(插入语句)。 那么为什么这不起作用呢?非常感谢您的