1

特定のコマンドを実行するための独自の対話型シェルをセットアップする Ruby スクリプト (1.8.7) があります。ユーザーが CTRL+D (mac/linux) を押したときに終了できるようにしたい。スクリプトはループ内に留まり、Readline を使用してユーザー入力を読み取ります。CTRL+D が EOF 制御文字を送信することは理解していますが、Ruby でこれをテストするにはどうすればよいですか? 標準のUNIXシグナルのリストには含まれていないようで、技術的には文字ではないため、行での通常の文字列比較も機能しないと思います。

どんなアイデア/ポインタ/提案も大歓迎です

乾杯

4

1 に答える 1

4

ドキュメントから:

readline(prompt = "", add_hist = false)

(…) 入力された行が空で、ユーザーが EOF を入力した場合 (UNIX では ^D を押す)、nil を返します。

例:

require "readline"
while buf = Readline.readline("> ", true)
  p buf
end
puts "EOF received, exiting"
于 2012-07-02T09:03:22.907 に答える