【发布时间】:2015-08-28 21:42:55
【问题描述】:
我有一个命令行 Java 程序,我通过 bash 脚本传递参数。该行位于我的 bash 脚本文件中,如下所示:
java -cp "$PROJECT_LOC" Main.main "@$"
bash 脚本在我的路径中,所以我可以通过输入直接调用程序
<projectName> arg1 arg2 arg3
直接进入我的终端(我在 OS X Yosemite 上)。
当一个&符号作为参数传入时,它不会被读取为普通的&符号,而是作为执行某些过程的特殊字符&符号。 但是,我希望能够简单地将 & 号作为参数传递,而不必让程序的用户手动转义字符。
有没有办法在我的 bash 脚本中处理一个 & 符号(或任何其他特殊字符)的传入,这样输入中的任何和所有特殊字符都将被转义,然后作为(现在清理) Java 程序的参数?
编辑:为了更清楚,我希望能够在我的终端中执行以下操作:
<projectName> arg1 arg&2 arg3
我希望这个输入等同于这个:
<projectName> 'arg1' arg&2' 'arg3'
但我正在寻找一种不必强迫用户自己转义特殊字符的方法(在幕后做所有事情)。
【问题讨论】:
-
尝试用引号括起来。
-
不可能。
bash具有某些特殊处理的字符,您必须引用它们以禁止这种处理。
标签: java bash command-line