java调用shell返回值问题

sk_up_dyy 2013-08-01 10:28:42
shell中调用另一程序有返回值,此时java调用此shell无法获得程序的返回值
...全文
345 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
huntor 2013-08-02
  • 打赏
  • 举报
回复
String[] cmds = {"/bin/sh", "-c" , "sssss.sh"};
sk_up_dyy 2013-08-02
  • 打赏
  • 举报
回复
up up up!
sk_up_dyy 2013-08-01
  • 打赏
  • 举报
回复
是从流中读取的,就是的不到输出值啊

 
#!/bin/sh
 
dsVal=`/info/IBM/InformationServer/Server/DSEngine/bin/dsjob -user xx -password xx 
-server TESTDS:31539 -jobinfo dstage1 SQ_CWWJ__T_CWWJ_GLFY_SY`
 
echo $dsVal

echo "hello world!"
 
exit 0
 
可以从流中换取到“hello world” 但是得不到dsVal的变量的值
loveofmylife 2013-08-01
  • 打赏
  • 举报
回复
java里需要从流里去读取shell的输出,并不是shell可以直接返回

 InputStream is = process.getInputStream ( ) ; 
        byte[] buffer = new byte[1024] ; 
        while ( is.read(buffer) != -1 ) { 
        result = new String (buffer) ; 
        } 
        is.close ( ) ; 
sk_up_dyy 2013-08-01
  • 打赏
  • 举报
回复
up up up
sk_up_dyy 2013-08-01
  • 打赏
  • 举报
回复
直接终端中调用此shell 可以输出结果,使用java调用此shell无法获得输出值 shell脚本部分代码

#!/bin/sh

dsVal=`/info/IBM/InformationServer/Server/DSEngine/bin/dsjob -user xx -password xx 
-server TESTDS:31539 -jobinfo dstage1 SQ_CWWJ__T_CWWJ_GLFY_SY`

echo dsVal

exit 0

loveofmylife 2013-08-01
  • 打赏
  • 举报
回复
没写过shell,不过shell也能想方法一样返回值吗,你可以贴出一个程序研究一下
sk_up_dyy 2013-08-01
  • 打赏
  • 举报
回复
我遇到的问题 与此贴类似 http://bbs.csdn.net/topics/280053880 烦请知道的朋友指点下 thanks!
sk_up_dyy 2013-08-01
  • 打赏
  • 举报
回复
的确采用Runtime,Process。问题是inputStream获得不了值?直接运行shell文件终端可看到,而用java调用则无法获得 继续up!
末日哥 2013-08-01
  • 打赏
  • 举报
回复
 Process pid = null;
 pid = Runtime.getRuntime().exec(shellCommand);

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧