我正在尝试从Java执行bash脚本,它返回错误/ bin / bash:’/ home / nika / NetBeansProjects / Parallel Framework / process-executor.sh’:没有这样的文件或目录,我正在使用ubuntu使用netbeans8& 14.04 jdk8.

这是我的代码:

public class Process {
public static void main(String[] args) {try {ProcessBuilder pb = null;Process p;String cmd2 = "";String workingDir = System.getProperty("user.dir");System.out.println(""+workingDir);String scriptloc="'"+workingDir+"/process-executor.sh'";String cmd[] = {"/bin/bash",scriptloc , "workspace/ForDemo.java", "ForDemo.java", "ForDemo"};for (int i = 0; i <= cmd.length-1; i++) {cmd2 += " "+cmd[i];}System.out.println("" + cmd2);pb = new ProcessBuilder(cmd);pb.directory(new File(workingDir));p = null;try {p = pb.start();} catch (IOException ex) {Logger.getLogger(Process.class.getName()).log(Level.SEVERE, null, ex);}BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));// read the output from the commandSystem.out.println("Here is the standard output of the command:
");String s = null;String output = "";while ((s = stdInput.readLine()) != null) {System.out.println(s);}output = "";// read any errors from the attempted commandSystem.out.println("Here is the standard error of the command (if any):
");while ((s = stdError.readLine()) != null) {System.out.println(s);}} catch (IOException ex) {Logger.getLogger(Process.class.getName()).log(Level.SEVERE, null, ex);}
}
}

但是当我从终端执行此命令时,它会执行脚本
?bin / bash’/ home / nika / NetBeansProjects / Parallel Framework / process-executor.sh’工作区/ForDemo.java ForDemo.java ForDemo

我的脚本存在另一个问题,它不执行cd命令,并显示“ / home / nika / NetBeansProjects / Parallel Framework / workspace / ForDemo.java /”:没有这样的文件或目录

我脚本的内容是

#!/bin/bash PATH=/bin:/usr/bin:/usr/local/binWORK=${PWD}/workspace/echo "'${WORK}${2}'"cd  "'${WORK}${2}/'"javac $2 java $3 echo "$3"

我的目录层次结构就像

-并行框架
???-process-executor.sh
???-工作区
??????-ForDemo.java(目录)
??????????—- ForDemo.java

最佳答案

在这种情况下,请不要在脚本的路径中使用单引号. e.像这样修复您的scriptloc变量:

String scriptloc= workingDir + "/process-executor.sh";

如果要在命令行中执行此命令(以转义路径中的空格字符),则必须使用单引号,但在这种情况下则没有必要,因为您已经在cmd []数组中隐式指定该路径只是一个“单元”

ProcessBuilder执行bash脚本相关推荐

  1. Linux中执行bash脚本报错/bin/bash^M: bad interpreter: No such file or directory

    问题描述:Linux中采用绝对路径执行Bash脚本,报错-bash: /home/xxx.sh: /bin/bash^M: bad interpreter: No such file or direc ...

  2. Ubuntu 执行 bash 脚本异常

    Ubuntu 执行 bash 脚本异常 文章目录 Ubuntu 执行 bash 脚本异常 执行报错 解决办法 参考 执行报错 [dev@my-ubuntu ~/packages/base_server ...

  3. linux 脚本加上行号,关于linux:如何在执行bash脚本时显示行号

    我有一个测试脚本,它有很多命令,会产生很多输出,我使用set -x或set -v和set -e,所以当出现错误时脚本会停止.但是,我仍然很难找到执行停止的行以定位问题.是否有一种方法可以在执行每一行之 ...

  4. 使用sh执行bash脚本的奇怪问题

    在同一个目录下有两个脚本,a.sh和b.sh,脚本内容如下: a.sh: echo "test for a" source b.sh b.sh: echo "test f ...

  5. windows执行bash脚本

    Windows执行shell脚本 1. 安装Git 2. 查看Git环境变量 右击电脑-属性-高级-高级系统设置 已设置环境变量 3. 打开Git bash 定位到sh文件所在目录,直接使用bash ...

  6. python:通过python脚本快速执行 bash 命令

    * git镇楼:git config --global core.filemode false* 实践出真知.虽然这个脚本代码量不大,但是也是经过3次修改才达到预期效果的. * 第一次写的时候,凭逻辑 ...

  7. Bash 脚本 set 命令教程

    http://www.ruanyifeng.com/blog/2017/11/bash-set.html set命令是 Bash 脚本的重要环节,却常常被忽视,导致脚本的安全性和可维护性出问题.本文介 ...

  8. python执行bash命令

    1.执行bash命令 import os os.system('ls -al') 2.执行bash脚本 os.system('sh ./test.sh') 3.脚本中带参数 arg1='111' ar ...

  9. linux内核与bash脚本接囗,Bash脚本编程之脚本基础和bash配置文件

    脚本基础 不严谨地说,编程语言根据代码运行的方式,可以分为两种方式: 编译运行:需要先将人类可识别的代码文件编译成机器可运行的二进制程序文件后,方可运行.例如C语言和Java语言. 解释运行:需要一个 ...

最新文章

  1. 【ACM】Uva 455
  2. AI机器学习科研助力 | 计算机科学方向一对一科研项目
  3. 4.IDA-导航(跳转到地址、导航按钮、栈帧、调用约定、局部变量布局、IDA的栈视图)
  4. java下拉列表 动态_【示例】教你简单用Java写一个动态更新的下拉列表(无数据库)...
  5. QT中的滚动条QScrollArea
  6. php的实体字符表,php htmlspecialchars_decode() 函数把预定义的 HTML 实体转换为字符
  7. linux安装中文输入法sc,Linux下安装Discuz_7.2_FULL_SC_GBK
  8. jenkins 读取json文件_使用插件轻松获取jenkins构建数据
  9. day03_js学习笔记_03_js的事件、js的BOM、js的DOM
  10. 一款强大的cisco模拟配置、拓扑制作工具
  11. transform 动画效果
  12. leetcode 21 java_LeetCode 21. 合并两个有序链表
  13. 分布式事务解决方案之2PC(两阶段提交)介绍
  14. cisco 以太通道(端口聚合)配置样例
  15. Kali Linux零基础入门到精通
  16. python要求微积分和高数吗_我们为什么要学高数?我们为什么要学微积分?
  17. 易语言批量替换html,易语言实现批量文本替换操作的代码
  18. ISP浅谈-Demosaic
  19. “要吃鲷鱼到岛上钓”团队小结
  20. 徐家骏是华为数据中心的头,技术超级牛人,一级部门总监,华为副总裁,年收入过千万。

热门文章

  1. 论文浅尝 - ACL2021 | 探讨跨句事件联合抽取问题
  2. Text2SQL 语义解析数据集、解决方案、paper资源整合项目
  3. Android官方开发文档Training系列课程中文版:后台加载数据之使用CursorLoader进行查询
  4. Zookeeper默认占用8080端口问题以及常见启动错误的解决
  5. linux提权辅助工具(二):linux-exploit-suggester-2.pl
  6. HTML中关于图像和表格,链接等的知识
  7. Network Request Failed
  8. import-module的注意事项与NDK_MODULE_PATH的配置
  9. 在BingoCC上面解析域名实现智能路由
  10. 解析/etc/inittab 文件(转)