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


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

1 件のコメント:

cacyvacek さんのコメント...

Play Online Slots | The casino world at JT Hub
JT is a 상주 출장마사지 leader in the iGaming industry with over 30 titles 화성 출장마사지 from more than 50 순천 출장샵 gaming companies. 전주 출장안마 Play for free and get real 고양 출장안마 bonuses.