2011-10-24 13 views
1

私はbashスクリプトを使ってrubyスクリプトを起動しています。 これはスクリプトの中にいる場合はうまくいきますが、そのディレクトリにいなければ、スクリプトはファイルパス上にないので面白くなります。bashスクリプトからファイルpather argsを使ってrubyスクリプトを実行しています

#!/bin/sh 
jruby -Ilib script.rb [email protected] 

これをスクリプトに追加しました。

mypath=`realpath $0` 

cd `dirname $mypath`/.. 

これは、スクリプトを私が欲しい場所から実行させます。問題は、その引数が相対パス名を変更しないということです。

私は入力パースにtrollopを使用しています。

私の質問は次のとおりです。入力のパスの入力を変更して、argsをルビスクリプトにプッシュするときに正しい相対パスになるようにするにはどうすればよいですか。 私はこの問題に対するルビーの修正に満足しています。

答えて

1

これは特にbashを使用しています。引数の配列をアセンブルし、それぞれに対してrealpathを呼び出します。

#!/bin/bash 
mypath=$(realpath $0) 
args=() 
for arg; do 
    args+=("$(realpath "$arg")") 
done 
cd "$(dirname "$mypath")"/.. 

jruby -Ilib script.rb "${args[@]}" 

私は自由にスペースを含むファイルやパスを処理するために、スクリプト全体で二重引用符を振りかけました。私は、環境変数を使用した、このようにそれをやって

を終わった

+0

おかげで、私は私が私のRuby用の引数にだけ引数そのパスにあなたの答えを使用することができると思う働いていましたスクリプトを実行し、残りの部分をそのまま渡します。 – defenistrator

関連する問題