gets
が呼び出されたときは、ウィンドウに手動で入力するのではなく、スクリプト自体で入力する方法はありますか?例えばrubyのスクリプトを使って関数を取得する入力を入力する方法
:gets
が呼び出された上記のスクリプトで
puts "enter your choice"
ch=gets
puts ch
、ウィンドウ内のスクリプトを介して、その入力を入力する任意のコマンドはありますか?
ありがとうございます。
gets
が呼び出されたときは、ウィンドウに手動で入力するのではなく、スクリプト自体で入力する方法はありますか?例えばrubyのスクリプトを使って関数を取得する入力を入力する方法
:gets
が呼び出された上記のスクリプトで
puts "enter your choice"
ch=gets
puts ch
、ウィンドウ内のスクリプトを介して、その入力を入力する任意のコマンドはありますか?
ありがとうございます。
1)あなたはSTDINへの外部からの入力を提供したい場合は、スクリプトを呼び出すときに
はのは、あなたの取得するコマンドがprog.rb.という名前のファイル内にあるとしましょう
echo "My input to gets" | ruby prog.rb
この意志出力
enter your choice
My input to gets
シェルで:あなたはprog.rbを実行する際にSTDINにいくつかの固定入力を提供したい場合は、コマンドラインからのパイプを使用して、それを実行することができ手動による介入を必要としません。
2)同じスクリプト内からSTDINを供給するための例:
class MyIO
def gets
"1\n"
end
end
$stdin = MyIO.new
puts "enter your choice"
ch=gets
puts ch # => 1
はWindows上で作業しているので、いくつかのステップを実行した後にrubyスクリプトを実行すると、選択肢を入力するように要求されます。 – madhu
申し訳ありませんが、上記のコメントは不完全です。窓の上で作業しているので、Rubyスクリプトを実行しているときにいくつかのステップを実行した後に、選択肢を入力するよう求められます。例:puts "choice your choice" choice =取得します。ユーザーに質問をせずに、スクリプト自体を介して常に値1を入力したいという選択肢を入力するように求めます。私は、このスクリプトを使っていくつかの変数を介してスクリプトがすでに実行されているときにこの入力を提供したいと思います。 – madhu
@madhu:WindowsはおそらくMyIO#が "1 \ r \ n"を返すように要求します。私はこれを確認することはできません、私は今のところWindowsマシンがありません。 – emboss
gets
機能は、単にので、あなたがしなければならないすべては読書のための新しいFile
やStringIO
を開き、それを割り当てるある$stdin
から読み込みます$stdin
。例えば
、あなたがpancakes.txt
というファイルがあり、これを行う場合:
$stdin = File.new('pancakes.txt', 'r')
puts gets
次にあなたが標準出力にpancakes.txt
の最初の行が表示されます。
私はWindows上で作業しているので、いくつかのステップを実行した後にルビスクリプトを実行しているときに、選択肢を入力するように要求されます。例:puts "choice your choice" choice = gets、ユーザーに質問をせずに、スクリプト自体を介して常に値1を入力したいという選択肢をユーザーが入力するように求めます。私は、このスクリプトを使っていくつかの変数を介してスクリプトがすでに実行されているときにこの入力を提供したいと思います。 – madhu
@ madhu:次に、希望の応答(改行で区切られた)でStringIOをインスタンス化し、それを '$ stdin'に割り当てます。その後、 'gets'はユーザに尋ねる代わりに文字列から読み込みます。 –
同じプログラムか別のプログラムか? – Dogbert