Linux"echo -n"没有被刷新

opt*_*ian 9 linux bash

我有以下代码:

while ...
  echo -n "some text"
done | while read; do
  echo "$REPLY" >> file
done
Run Code Online (Sandbox Code Playgroud)

但echo只在没有"-n"标志的情况下使用.看起来像使用-n时,输出不会被下一个while循环刷新/读取

即使未遵循EOL,我怎样才能确保读取"某些文本"?

小智 1

解决方法是(按照原始示例):

while ...
  echo -n "some text"
done | (cat && echo) | while read; do 
  echo "$REPLY" >> file
done
Run Code Online (Sandbox Code Playgroud)

这会将 EOL 附加到测试流并允许read读取它。副作用是流结束时会出现额外的 EOL。