gpt4 book ai didi

java - 系统命令在 Ruby 中不起作用并返回 false?

转载 作者:行者123 更新时间:2023-12-01 22:55:25 25 4
gpt4 key购买 nike

我想从 Ruby 运行一个 Java 程序,它是一个独立的应用程序。我在 Ruby 中使用以下命令:

system("cd /home/webserver/testproject"); 
system("sh testsh.sh")

我的 Java 项目在“/home/webserver/testproject”中可用,因此我使用第一个命令更改目录。 sh 文件写入一个文件,其中包含运行我的主类的信息,并设置 CLASSPATH 环境变量来运行程序。在 Ruby 外部执行此操作时,它可以正常工作,但在 Ruby 内部则无法正常工作。

最佳答案

system 每次运行时都会生成一个新的子 shell,因此您始终从当前目录开始。您需要的是使用 Dir.chdir 更改 Ruby 内的目录:

Dir.chdir("/home/webserver/testproject") do
system "sh testsh.sh"
end

工作目录中的更改将仅应用于 do ... end block 内的代码。如果您想让整个脚本的更改永久生效,可以这样做:

Dir.chdir "/home/webserver/testproject"
system "sh testsh.sh"

关于java - 系统命令在 Ruby 中不起作用并返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24141051/

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