当前位置: 首页 > 面试题库 >

使用Java for OSX编写可执行的.sh文件

通和裕
2023-03-14
问题内容

因此,我正在尝试编写一个将可执行的.sh文件,这是我目前正在编写的方式:

Writer output = null;

try {
  output = new BufferedWriter(new FileWriter(file2));
  output.write(shellScriptContent);
  output.close();
} catch (IOException ex) {
  Logger.getLogger(PunchGUI.class.getName()).log(Level.SEVERE, null, ex);
}

这样就可以写文件了,但是它不是可执行文件。当我编写可执行文件时,是否可以更改其状态?

编辑:为了进一步说明,我试图使其在默认情况下执行,例如,如果双击生成的文件,它将自动执行。


问题答案:

您需要对其进行chmod修改,并且可能可以通过执行如下系统命令来实现:

实际上,您所需要做的只是解散如下所示的内容:

Runtime.getRuntime().exec("chmod u+x "+FILENAME);

但是,如果您想更明确地跟踪它,可以捕获stdin / stderr,则应类似以下内容:

Process p = Runtime.getRuntime().exec("chmod u+x "+FILENAME);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));    
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));

我从这里获得的信息:http
:
//www.devdaily.com/java/edu/pj/pj010016/pj010016.shtml

更新:

测试程序:

package junk;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class Main{
  private String scriptContent = '#!/bin/bash \n echo "yeah toast!" > /tmp/toast.txt';
  public void doIt(){
    try{
      Writer output = new BufferedWriter(new FileWriter("/tmp/toast.sh"));
      output.write(scriptContent);
      output.close();
      Runtime.getRuntime().exec("chmod u+x /tmp/toast.sh");
    }catch (IOException ex){}
  }

  public static void main(String[] args){
    Main m = new Main();
    m.doIt();
  }

}

在Linux上,如果打开文件浏览器并双击/tmp/toast.sh并选择运行它,它将生成一个文本文件/tmp/toast.txt,文字为“ yeah
toast”。我认为Mac会做同样的事情,因为它是BSD的内幕。



 类似资料:
  • 问题内容: 我将如何执行.SH文件(这是localhost,没有远程连接或其他任何内容)?当我进行搜索时,我看到了很多其他东西,但这些似乎没有用。 这是Java6。同样重要的是,SH所做的只是在移动两个文件夹。 谢谢! 问题答案: 您可以使用ProcessBuilder

  • 问题内容: 我将如何执行.SH文件(这是localhost,没有远程连接或其他任何内容)?当我进行搜索时,我看到了很多其他东西,但这些似乎没有用。 这是Java6。同样重要的是,SH所做的只是在移动两个文件夹。 谢谢! 问题答案: 您可以使用ProcessBuilder

  • 本文向大家介绍从头学Python之编写可执行的.py文件,包括了从头学Python之编写可执行的.py文件的使用技巧和注意事项,需要的朋友参考一下 Python可是真强大。但他具体是怎么强大的,让我们一点一点来了解吧(小编每天晚上下班回家会抽时间看看教程,多充实下自己也是好的)。 废话不多说,就讲一下这个背景吧: 事情是这个样子的~本着好学的精神,咱就买了本书,学习python结果呢,发现pyth

  • 问题内容: 每个人,如何为Eclipse Helios中用Java编写的程序创建可执行文件?我的意思是创建一个小图标,使其只能通过双击其图标来启动程序,谢谢事先 编辑, 我的意思是Windows可执行文件 问题答案: 在eclipse中导出.jar。(如何) 使用JSmooth (信息)制作一个.exe文件。(如何)

  • 我正在使用包含所有maven配置、密钥、maven命令和所有内容的sh文件,我想从Dockerfile内部执行这个sh文件,以便在运行容器时执行sh文件。 这是我的Docker文件的外观: DockerTest。sh文件如下所示。 当我创建docker图像并运行该图像时,它显示了这个错误。我试过很多东西,但仍然不起作用,这表明了这个错误 尚未为此生成指定目标。您必须以以下格式指定有效的生命周期阶段

  • 以下是我的cmake代码: 我尝试从链接中合并步骤,但没有工作,并得到以下错误: /usr/bin/ld:尝试动态对象的静态链接`/usr/lib/x86_64-linux-gnu/libglu.so'collect2:错误:ld返回1退出状态src/cmakefiles/wwest-export-app.out.dir/build.make:774:recipe for targe'bin/ww