java - 如何将参数传递给命令行 Java 程序并转义所有特殊字符?

标签 java bash command-line

我有一个命令行 Java 程序,我通过 bash 脚本传递参数。该行位于我的 bash 脚本文件中,如下所示:

java -cp "$PROJECT_LOC" Main.main "@$"

bash 脚本在我的路径中,因此我可以通过键入直接调用该程序

<projectName> arg1 arg2 arg3

直接进入我的终端(我使用的是 OS X Yosemite)。

当 & 符号作为参数传入时,它不会被读取为普通 & 符号,而是被读取为执行某些进程的特殊字符 & 符号。 但是,我希望能够简单地传入一个 & 符号作为参数,但不必让程序的用户手动转义该字符。

有没有办法在我的 bash 脚本中处理&符号(或任何其他特殊字符)的传入,以便输入中的任何和所有特殊字符都将被转义,然后作为(现已清理)传入) Java 程序的 args?

编辑:更清楚地说,我希望能够在我的终端中执行以下操作:

<projectName> arg1 arg&2 arg3

我希望这个输入等价于:

<projectName> 'arg1' arg&2' 'arg3'

但我正在寻找一种方法,不必强制用户自己转义特殊字符(在幕后做所有事情)。

最佳答案

您可以在每个参数两边加上单引号 (')。不过,我不确定这是否算作“转义”参数。

关于java - 如何将参数传递给命令行 Java 程序并转义所有特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32280171/

相关文章:

java - Google Guice+策略模式+反射(reflection)

linux - 有没有一种有效的方法可以用 _ 替换文件名中的空格? (数千个文件)

linux - 如何将一个文件中的所有单词提供给 'tr' 以便在另一个文件中搜索和删除文本?

linux - 从linux命令行创建word doc文件

来自十六进制数组的 Java 初始化字符串

java - 如何告诉 Maven 构建一个可执行的 jar

linux - 语法错误 : redirection unexpected

command-line - 如何从命令行运行 db2 sql 命令?

sockets - 在 macos 上通过命令行发送 TCP 消息

java - Guava Splitter.onPattern(..).split() 与 String.split(..) 有何不同?