2011-10-19 8 views
0

私がしようとしているのは、UNIXコマンドになるルビスクリプトのオプションの引数を渡すことです。コマンドはgreps、パイプ、その他の可能性のあるものを含む(おそらく)。本質的に、私が思っているのは、GetOptLongオプションを任意の文字を引数として受け入れるように設定できるかどうかです。それは価値があるため、私はOptionParserを使うことはできませんし、おそらくslob(あるいはそれが呼び出されたもの)ではありません。オプション引数のrubyのGetOptLongプロセス空間を使用できますか?

おかげで、あなたは自分のUNIXに渡すことができ -Rob

答えて

1

かなり確信して文字列としてコマンドやスクリプト内からそれらを実行..のようなので、何か:

#getoptlong.rb 

require 'getoptlong' 

opts = GetoptLong.new(
    [ '--unix', GetoptLong::OPTIONAL_ARGUMENT ] 
) 

opts.each do |opt, arg| 
    case opt 
    when '--unix' 
     puts `#{arg}` 
    end 
end 

やスクリプトを実行

ruby getOptLong.rb --unix "netstat -an | grep '61613'" 
+0

ありがとうございます。ありがとうございます。私が投稿する前に私はそれをテストする立場にいませんでした、おそらく私は投稿する前に待っていたはずです。しかし、もし私がコマンド引数にパイプを入れると、シェルはそれらを文字通り解釈します。それらをエスケープする方法はありますか、バックスラッシュは機能しません(ご参考までに、@mu_is_too_shortにも感謝します) – RTF