2010-06-24 16 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/

相關問題