美文网首页写代码中遇到的问题记录
java 调用shell脚本遇到的问题(mac)

java 调用shell脚本遇到的问题(mac)

作者: 九乡河的小香瓜 | 来源:发表于2018-03-23 13:16 被阅读0次

    问题一:我想要先切换到一个目录,再在这个目录下执行一个命令

    Lista=newArrayList();

    a.add("cd xxx");

    a.add("ls -l");

    a.add("./sonar.sh start");

    callShell(a);

    这样写是不行的,因为这是单次事务型的,就是每次调用都是独立的事务或者说操作,没有关联的。所以还是会在当前目录下执行后续操作,不会在xxx目录下执行下面的操作

    可以写一个独立的脚本,然后一次运行脚本,这样多复杂的逻辑都没问题。

    问题二:在终端中直接输入可以正常运行的命令行,到java中调用shell就不可以运行了

    我执行一些比如echo之类的命令都是可以正常运行的,但是执行到比如sh a.sh之类的命令总是返回值127,又不知道他的错误信息,而且一个很长的shell脚本他也不会返回是第几行错的。我搜索了很久,可能的原因是java 运行时的环境变量和系统的环境变量不一样。

    直接在终端查看环境变量

    但是我在java中调用shell执行 echo $PATH

    得到的是这样的,少了一大段。

    并不知道根本原因是不是这个,我先学习一下怎样在java 运行时环境添加环境变量。。。

    以我想调用sonar-scanner为例

    根据https://yq.aliyun.com/articles/2362,应该是给他来个软链接

    ln -s /Users/Alisa/Documents/sonar-scanner-3.0.3.778-macosx/bin/sonar-scanner sonar-scanner

    但是这个方法对我没有用,于是我突发奇想在我的shell脚本中直接使用他的全名试一试,结果成功了。

    心得:本来今天一天的尝试,我都想放弃了,因为我觉得可能是我的电脑有问题,反正最后会部署到linux服务器上的,现在有问题也没关系,但是今天我觉得以后我还是可能会使用自己的电脑调用shell脚本的,迟早要解决的。所以有问题不能逃避,要正视他并解决他。通过今天的学习,我发现了,即使部署到了linux服务器上,还是会遇到相同的问题的,还好我现在发现了解决方案。

    相关文章

      网友评论

        本文标题:java 调用shell脚本遇到的问题(mac)

        本文链接:https://www.haomeiwen.com/subject/ixxxcftx.html