大家好,我遇到一个郁闷问题,紧急求助
环境: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)
问题1:为什么直接执行没调用test2.sh
问题2:使用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里面的代码未被执行请各位大侠帮忙,在线等!!!

解决方案 »

  1.   

    这个帖子我在solaris区也发了一个,现在的进展是如果把/bin/sh替换成/bin/bash就会看到bb.log,但是仍然未能调用test2.sh
      

  2.   

    你试试把 ./test2.sh 改成 source test2.sh 看看可以不?Solaris 系统不知道有没有 source 命令
      

  3.   

    结帖了:谢谢qq120848369
    问题是这样的,在bin/sh下不支持写法:
    export aa=123456
    应该换成以下写法:
    aa=123456
    export aa
    所以对于java调用代码有两种解决方式:
    1 使用/bin/bash调用
    2 把sh里面的写法改称sh支持的写法还有关于不能调用子sh的问题,我的例子举的不符合实际情况,大家不用看了,其实我是在子sh里使用su - 用户 -c "全路径/test2.sh"的方式调用的test2 ,估计在切换用户的时候会自动使用/bin/sh去执行,test2里面其实还有export命令,一样过不去,所以,几个问题是一个问题,请大家以后直接使用sh标准写法,就不会有问题了