ラベル Ruby の投稿を表示しています。 すべての投稿を表示
ラベル Ruby の投稿を表示しています。 すべての投稿を表示

2007年12月10日月曜日

rubyを使って、標準入力から入力を受け付けるプログラムに入力値を渡す

 標準入力から入力(整数値)を受け取って、それを用いるプログラムを使用する時のお話。
入力値をー8から8まで1ずつ増やしていき、各々の値に対してそのプログラムを走らせる必要があったのだが、rubyで自動化するのに少し手間取った。
 これまでは、perlを用いて下のようにしていた。


#!/usr/bin/perl
for($i=-8; $i<=8; $i++){
system("echo $i | 実行プログラム");
}


これをrubyで行おうとして、はじめは次のように書いた。


#!/usr/bin/ruby
for i in -8..8
system("echo i | 実行ファイル");
end


 ところが、rubyではrubyスクリプト内で用いられているiは""の中では展開されない。
perlでは数値として扱われるところがrubyとperlにおける違いの一つのようだ。
 そこで、式展開 #{}を用いて以下のように修正する。


#!/usr/bin/ruby
for i in -8..8
system("echo #{i} | 実行ファイル");
end


 これで期待どおりに動いた。