【发布时间】:2015-01-22 06:29:25
【问题描述】:
我首先要说我发现了很多与我相似的主题,但没有一个能够为我提供正确的答案。
我正在尝试使用以下 shell 脚本将字符串插入 xml 文件:
#!/bin/bash
cd /var/lib/tomcat7/webapps/Config || exit
sudo sed -i '/<\/home>/i <entry>'"$@"'</entry>' data.xml
当执行这样的脚本时 ./script.sh “测试条目”,我的 xml 文件将如下所示:
<home>
<entry>test entry</entry>
</home>
这就是我想要的。但是当我尝试通过 java 调用这个脚本时,我无法成功地转义引号。
我的java代码是这样的:
String entry = "test entry";
String command = "/home/user/addentry.sh " + "\"" + entry + "\"";
Process p = null;
Runtime run = Runtime.getRuntime();
try {
p = run.exec(command);
}
.....
执行代码时,我的 xml 文件如下所示:
<home>
<entry>"test
</home>
如您所见,报价也作为我输入的一部分传递。 将java代码更改为:
String command = "/home/user/addentry.sh " + entry;
它适用于没有空格的字符串(因此脚本只有 1 个参数)
提前致谢
【问题讨论】:
标签: java string unix sed escaping