dポイントプレゼントキャンペーン実施中!

Windows XP で Cygwin, ruby を使っています。
bashスクリプトの中の ruby プログラムで
シェル変数を参照したいのですが
どうしたらよいでしょうか?
例:
abc = "qwerty"
ruby -e '
#ここでシェル変数 abc を参照したい
'

A 回答 (3件)

基本的に、シェル変数というのはシェルスクリプトの中に閉じて使用するもので、他のプログラムから参照することはできません。


しかし、「export abc」として、環境変数にしてしまえば、ENVを使ってrubyから参照することができます。

http://www.ruby-lang.org/ja/man/?cmd=view;name=E …
    • good
    • 0
この回答へのお礼

アドバイス、ありがとうございました。

お礼日時:2005/06/12 16:00

こんなのはどうでしょう?


!/bin/sh
abc="qwerty"
ruby -e '
puts ARGV
' $abc
    • good
    • 0
この回答へのお礼

スクリプトの読みやすさでは、この方法が一番のような気がします。
ありがとうございました。

お礼日時:2005/06/12 15:58

ruby -e "xxxxx


xxx $abc
"
と、囲むのを ' でなく " にすれば $abc で参照できます。rubyプログラムの文字として $ や " を使いたいときは \$ や \" と書きます。

この回答への補足

abc="qwerty"
ruby -e "p $abc"
では
-e:1: undefined local variable or method `qwerty' for main:Object (NameError)
というエラーになりました。
シェル変数 abc が展開されていますが、展開後の文字列がruby によって変数かメソッドと解釈されるようです。

abc="qwerty"
ruby -e "p \"$abc\""
で期待通りに動きました。
ありがとうございました。

補足日時:2005/06/12 15:54
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!