首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用分号执行apache-commons-exec多个命令

使用分号执行apache-commons-exec多个命令
EN

Stack Overflow用户
提问于 2015-12-14 21:13:09
回答 3查看 1.2K关注 0票数 0

我正在使用apache-commons-exec在Java应用程序中执行一些命令。

当我执行'ls -la /home/user‘时,它工作得很好。

但是我需要执行下面这样的代码

代码语言:javascript
复制
./setEnvsOfTypeXXX.sh; ./setEnvsOfTypeYYY.sh; ls -la /home/user

我在CommandLine对象中输入该命令,但它不起作用。

它返回一个空字符串和-559038737退出代码。

因为环境和脚本的性质(第一个设置了一些需要的环境变量);我不能将所有的调用放在一个脚本中,或者我尝试了许多解决方案(比如用引号将所有命令括起来,比如"'“,或者使用PumStreamHandlet输入流),但到目前为止都没有起作用……

有谁有主意吗?

EN

回答 3

Stack Overflow用户

发布于 2015-12-14 21:31:37

试一试

代码语言:javascript
复制
sh -c '. ./setEnvsOfTypeXXX.sh; . ./setEnvsOfTypeYYY.sh; ls -la /home/user'

作为你的命令

我猜你这里需要两样东西。

首先,如果您正在设置环境变量,则可能需要使用。其次,您希望运行一个shell并让shell执行shell脚本,然后在相同的上下文中运行以下命令

票数 0
EN

Stack Overflow用户

发布于 2015-12-15 01:25:22

我试过这段代码

代码语言:javascript
复制
cmdLine = new CommandLine("/bin/bash");
cmdLine.addArgument("-c");
cmdLine.addArgument(new StringBuilder().append("'").append(command).append("'").toString());

即使使用command = "ls";

有一个错误

代码语言:javascript
复制
bash: ls: No such file or directory

有趣的事实:在windows中,这工作正常!

代码语言:javascript
复制
        cmdLine = new CommandLine("cmd.exe");
        cmdLine.addArgument("/c");
        cmdLine.addArgument(new StringBuilder().append("\"").append(command).append("\"").toString());
        logger.info("Command win line: cmd.exe /c \""+command + "\"");

我现在完全没有选择了!

票数 -1
EN

Stack Overflow用户

发布于 2015-12-15 03:38:09

我得到了一个变通方法:使用以下命令创建一个临时sh文件,将shebang放在第一行并授予权限,在一个命令行中执行此文件,获得结果并输出,最后删除临时文件...

而且它起作用了!

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34267989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档