如何在没有ruby的情况下列出init.d脚本的文件

时间:2010-06-24 17:29:18

标签: ruby perl list directory init.d

我需要将使用ruby的init.d脚本转换为不使用ruby。我可以使用perl或python或其他东西,但我不能使用ruby。我的主要问题是弄清楚如何动态获取目录中的* .jar文件列表并用':'分隔它们。其余的我可以用bash脚本轻松完成。

以下是我正在使用的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

2 个答案:

答案 0 :(得分:5)

这应该做的工作:

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

答案 1 :(得分:1)

  

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

对于Perl解决方案,然后查看返回文件列表的glob函数。

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

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

/ I3az /