如何将参数从包装器 shell 脚本传递到 Java 应用程序?
2022-09-01 20:14:23
我想在命令行(linux和mac)上运行我正在创建的Java程序。我不想一直键入“java”和参数,所以我正在考虑创建包装脚本。做到这一点的最佳方法是什么,以便他们无处不在?我也希望能够传递参数。我正在考虑使用“shift”来执行此操作(删除第一个参数)。
有没有更好的方法来做到这一点,而根本不使用脚本?也许制作一个不需要通过“java”命令调用的可执行文件?
我想在命令行(linux和mac)上运行我正在创建的Java程序。我不想一直键入“java”和参数,所以我正在考虑创建包装脚本。做到这一点的最佳方法是什么,以便他们无处不在?我也希望能够传递参数。我正在考虑使用“shift”来执行此操作(删除第一个参数)。
有没有更好的方法来做到这一点,而根本不使用脚本?也许制作一个不需要通过“java”命令调用的可执行文件?
假设您使用的是与 Bourne shell 兼容的 shell;例如.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...”
,其中c
是IFS
变量值的第一个字符。
换句话说,所有 shell 参数都将串联到 Java 应用程序的单个命令参数中,而忽略原始单词边界。
请参阅或手动...或 POSIX 外壳规格 ...有关 shell 如何处理引用的详细信息。bash
sh