代码之家  ›  专栏  ›  技术社区  ›  Nikordaris

我如何列出不带ruby的init.d脚本的文件

  •  1
  • Nikordaris  · 技术社区  · 14 年前

    我需要将使用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 回复  |  直到 14 年前
        1
  •  5
  •   pejuko    14 年前

    这应该可以做到:

    JARS=`ls $HOME/lib/*.jar | tr '\n' ':'`
    
        2
  •  1
  •   draegtun    14 年前

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

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

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

    /I3AZ/