コマンドにデータを入力するには下記の記述などで対応ができます。
- 配列ARGV
- getsメソッド
ARGVでコマンドラインにデータを入力
コマンドラインからの情報はARGVで取り出すことができます。ARGVは配列オブジェクトとなっていて、複数データを要素として取り出すができます。例としてまず下のような、ファイルを作成します。今回は「nyuuryoku.rb」というファイルを作ってみました。
1 2 3 4 5 |
puts "最初の入力:#{ARGV[0]}" puts "2番目の入力:#{ARGV[1]}" puts "3番目の入力:#{ARGV[2]}" p ARGV[0] p ARGV[2] |
そのファイルをコマンドラインから実行してみます。書き方はファイルを指定し、半角スペースを入れその後に、渡したい情報を入力します。複数入力する場合はデータとデータの間に半角スペースを入れます。ここで入力した情報が、「ARGV」の配列の要素として渡されることになります。
C:\Users>nyuuryoku.rb 1 2 sann 最初の入力:1 2番目の入力:2 3番目の入力:sann "1" "sann"
文字列を数値に変える
「ARGV」の配列の要素は文字列となっているので「”1″」などを数値「1」にしたい場合は「to_i」メソッドを使います。
1 2 3 |
p ARGV[0].to_i p ARGV[1].to_i p ARGV[0].to_i + ARGV[1].to_i |
C:\Users>nyuuryoku.rb 1 2 1 2 3
このように「to_i」メソッドを使えば簡単に数値に変換することができ、数値の計算もできるようになります。
引数を渡さなかった場合
また、コマンドラインにデータを書かなかったは下のように表示されます。
1 2 |
p ARGV[0] p ARGV[1].to_i |
C:\Users>nyuuryoku.rb nil 0
getsメソッド
「gets」でコマンドにデータを入力する場合はまず、下のように記述したファイルを用意します。今回も先程と同じファイル名「nyuuryoku.rb」としました。
1 2 |
puts "入力1" p gets |
このファイルを実行するとまず、「”入力1″」がputsされ、処理が中断し、情報を入力するのを待ってくれます。
C:\Users>nyuuryoku.rb 入力1
今回は文字列「こんにちは」と入れてみます。
C:\Users>nyuuryoku.rb 入力1 こんにちは
C:\Users>nyuuryoku.rb 入力1 こんにちは "こんにちは\n"
すると「”こんにちは\n”」としてデータの入力ができました。
改行を消すには?
「gets」はデフォルトで改行の特殊文字「\n」が入ってしまうのでこれを消すには「chomp」というメソッドを使います。
1 2 |
puts "入力2" p gets.chomp |
C:\Users>nyuuryoku.rb 入力2 こんにちは "こんにちは"
数値を入力したいときは?
「gets」では文字列が入力されてしまいますので、数値を入力したい場合は先程のARGVと同様に「to_i」メソッドを使います。
1 2 |
puts "数値1" p gets.to_i |
今回は数値として「3」を入れてみます
C:\Users>nyuuryoku.rb 数値1 3
入力し、エンターを押すと数値「3」が入力できたことがわかります。
C:\Users>nyuuryoku.rb 数値1 3 3
入力した値を計算する場合
入力した値の計算を行いたい場合は下のように記述すればOKです。
1 2 3 4 5 |
puts "数値1" num1 = gets.to_i puts "数値2" num2 = gets.to_i puts "数値1+数値2=#{num1 + num2}" |
C:\Users>nyuuryoku.rb 数値1 3 数値2 5 数値1+数値2=8
このスクリプトの流れとしては2、4行目にてgets.to_iで入力された数値をそれぞれの変数「num1」「num2」に代入。最後の5行目で2つの入力された数値を足して文字列と一緒に出力しています。
コメントを残す