gpt4 book ai didi

java - 使用不同的解释器执行shell脚本

转载 作者:行者123 更新时间:2023-11-30 08:03:21 27 4
gpt4 key购买 nike

我正在尝试使用 JSch 执行 python 脚本,我想要的是使用不同的解释器(shebang)从 .sh 文件运行 python 脚本。

这是我的 shell 脚本文件 (fileExec.sh) 的内容:

#!/usr/bin/env python
print 'hello from python'

自从我得到:以来,shebang 似乎无法更改:

bash : print command is not found

这是我的 Java 代码:

session = newSessionFor(user, host, port);
Channel channel = session.openChannel("exec");

File shFile = new File("fileExec.py");
FileWriter writer = new FileWriter(shFile);
writer.write(shebang + "\n");
writer.write(command);
writer.close();

PrintWriter printWriter = new PrintWriter(shFile);
printWriter.println(shebang);
printWriter.println(command);
printWriter.close();

((ChannelExec) channel).setCommand(FileUtils.readFileToByteArray(shFile));

最佳答案

shebang 仅在执行文件时由操作系统使用。

您不是在执行文件,您基本上是将 python 文件的内容复制粘贴到 shell 提示符上。

如果您不想在服务器上存储和执行文件,可以使用 python -c yourcommand 从 shell 运行 Python 命令。这是终端中的外观,请随意尝试:

user@host ~$ python -c 'print "hello world"'
hello world

要在程序中执行此操作,请添加一个方法来转义 shell 中的任意字符串:

static String escapeForShell(String s) {
return "'" + s.replaceAll("'", "'\\\\''") + "'";
}

然后运行

((ChannelExec) channel).setCommand("python -c " + escapeForShell(command));

其中字符串命令=“从python打印'hello'”;

关于java - 使用不同的解释器执行shell脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31547932/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com