1. ホーム
  2. ruby

[解決済み] Ruby の `print` から bash スクリプトを呼び出して echo するにはどうしたらいいですか?

2022-02-18 23:39:12

質問

bashのシェルスクリプトからrubyを呼び出しているのですが、以下のような感じです。

#!/bin/bash

# lots of stuff

ruby script.rb

# more stuff

私が欲しいものは print が、シェルスクリプトの標準出力に表示されない。不思議なことに、私が何を使っても p オン が行います。 が表示されます。どうすれば print ?


即答です。 使用 puts .

解決方法は?

私の推測では、これはSTDOUTバッファリングと関係があると思います。 p はバッファをすぐにフラッシュしますが print はしません。使用方法 puts あるいは、STDOUTを常にグローバルにフラッシュするように設定することもできます。

$stdout.sync = true

ケースバイケースでフラッシュするには、常に flush を自分で作る。

print ...
print ...
print ...
$stdout.flush