JAVA调用shell传递参数转义问题

社区管理员 发布于 2016/08/25 10:28
阅读 796
收藏 0

我用java代码调用了一个脚本,脚本有两个参数,调用范例例如:sh start.sh 100 "参数1|参数2|参数3"

然后在start脚本里大致过程如下:

tag_id=$1
keys=$2
keys=${keys//|/ }
rm -rf keys/$tag_id.txt
for tag in $keys
do
        echo $tag >> keys/$tag_id.txt
done



现在出现的问题现象是,我直接在终端上敲命令 sh start.sh 100 "参数1|参数2|参数3" 是可以正常执行的,

但是用java代码调用的话,txt文件里就只有第一个“|”之前的内容,后面都没有了。

加载中
0
游客
游客

正确的做法是用java代码更新shell,就是把参数写到shell里去,然后再执行shell

记得打个勾!!!

游客
游客
回复 @社区管理员 : 我服。用java 执行你的shell,这一步有没有问题,如果这一步没有问题,那就加上逻辑,执行之前更新shell,把参数填进去。就样满足你的需求了。
社区管理员
回复 @游客 : 还没有搞定
游客
游客
回复 @社区管理员 : 还没有搞定吗
游客
游客
回复 @社区管理员 : 明白你的需求,我有类似的模块,就是这么干的,你那种方式我验证过,是行不通的。Java更新shell文件,写的内容不是你想怎么写就怎么写吗,何况是改几个参数。
社区管理员
参数不是太好写到shell里,每次调用参数都不一样,是动态变化的
0
漓江
漓江

String cmd = "sh start.sh 100 \"参数1\|参数2\|参数3\"";

如果参数是动态变化的情况下,可以从main()函数出接收,或者读取某个配置文件。解析之后,再传进去。

返回顶部
顶部