Wie kann ich Liste Dateien für einen init.d-Skript ohne Rubin
Frage
Ich brauche eine init.d-Skript zu konvertieren, dass Anwendungen Rubin nicht Rubin verwenden. Ich kann sonst Perl oder Python oder etwas, aber ich kann nicht verwenden Rubin. Mein Hauptproblem besteht darin, herauszufinden, wie dynamisch die Liste der * .jar-Dateien in einem Verzeichnis erhalten, und trennen Sie sie durch ‚:‘. Der Rest kann ich mit einem Bash-Skript leicht tun.
Dies ist der Ruby-Code Ich arbeite mit:
#!/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
Lösung
Dies sollte die Arbeit machen:
JARS=`ls $HOME/lib/*.jar | tr '\n' ':'`
Andere Tipps
Mein Hauptproblem besteht darin, herauszufinden, wie dynamisch die Liste der * .jar-Dateien in einem Verzeichnis erhalten, und trennen Sie sie durch ‚:‘
Für Perl-Lösung nehmen dann einen Blick auf die glob
Funktion, die eine Liste zurückgibt von Dateien.
my $HOME = '/usr/local/myproject';
my $JARS = join ':', glob( $HOME . '/lib/*.jar' );
/ I3az /