2010-06-24 58 views
1

我需要将使用ruby的init.d脚本转换为不使用ruby。我可以使用Perl或Python或其他东西,但我不能使用红宝石。我的主要问题是搞清楚如何动态地获取目录中的* .jar文件列表,并用':'分隔它们。剩下的我可以用bash脚本轻松完成。如何在不使用ruby的情况下列出init.d脚本的文件

这里是Ruby代码我的工作:

#!/usr/local/bin/ruby 

require 'fileutils' 

HOME = '/usr/local/myproject' 
JAVA_HOME = '/usr/java/jdk' 
JARS = Dir.glob(File.join(HOME, 'lib', '*.jar')).join(':') 
PID_FILE = '/var/run/myproject.pid' 
OUT_FILE = File.join(HOME, "stdout") 
ERR_FILE = File.join(HOME, "stderr") 

case ARGV.first 
when 'start' 
    exec "/usr/local/bin/jsvc -home #{JAVA_HOME} -cp #{JARS} -pidfile #{PID_FILE} -DHOME=#{HOME} -user me -outfile #{OUT_FILE} -errfile #{ERR_FILE} mypackage.MyProject" 
when 'stop' 
    exec "/usr/local/bin/jsvc -home #{JAVA_HOME} -cp #{JARS} -pidfile #{PID_FILE} -stop mypackage.MyProject" 
end 

回答

5

这应该做的工作:

JARS=`ls $HOME/lib/*.jar | tr '\n' ':'` 
+0

最大的可移植性,我认为你需要'LS -1 ...'强制输出为每行一个文件。 – 2010-06-24 17:42:40

1

我的主要问题是搞清楚如何动态获取列表* .jar文件放在一个目录中,并用':'分隔它们。

对于Perl解决方案,请看看在返回文件列表的glob函数中。

my $HOME = '/usr/local/myproject'; 

my $JARS = join ':', glob($HOME . '/lib/*.jar'); 

/I3az/

相关问题