环境:sunM3000 Solaris10系统 JDK1.5
根目录下创建/work文件夹,下包含test.sh test2.sh
脚本如下:
test.sh
##
cd /work
touch aa.log
export aa=123456
./test2.sh
touch bb.log
----------------------
test2.sh
##
cd /work
touch cc.log
----------------------
直接使用ssh调用test.sh,可执行,看到aa.log和bb.log(注意:没有cc.log)
[color=#FF0000]问题1:为什么直接执行没调用test2.sh
问题2[/color]:使用java标准调用test.sh(Runtime.getRuntime().exec({"bin/sh","-c","./work/test.sh"})),只能看到aa.log创建,卡在export命令上了
问题3:如果注释掉代码"#export aa=123456",会输出aa.log和bb.log,但test2.sh里面的代码未被执行
回复:/bin/bash
问题是这样的,在bin/sh下不支持写法:
export aa=123456
应该换成以下写法:
aa=123456
export aa
所以对于java调用代码有两种解决方式:
1 使用/bin/bash调用
2 把sh里面的写法改称sh支持的写法