linux – tee命令无法正常工作(带有read和echo)

前端之家收集整理的这篇文章主要介绍了linux – tee命令无法正常工作(带有read和echo)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
脚本和输出如下:

脚本:

  1. #!/bin/bash
  2. #tee_with_read.sh
  3. function tee_test()
  4. {
  5. echo "***This should be printed first but it is not***"
  6. read -r -p "Enter input : "
  7. echo "You entered : $REPLY"
  8. }
  9. tee_test | tee -a logfile

输出

  1. $./tee_with_read.sh
  2. Enter input : ***This should be printed first,but it is not***
  3. "My Input"
  4. You entered : "My Input"

我正在尝试将输出附加到logfile.
但是正如你在输出中所看到的那样,似乎第一次读取被剔除,然后是回声,这不是预期的.

我在Windows 10上使用Git Bash版本3.1.23.
由于此版本中没有命名管道,因此我无法使用命名管道进行日志记录.

解决方法

read -p将它的输出写入stderr,echo正在写入stdout. stdout通常是缓冲的,而stderr则没有,因此在stdout之前看到stderr事件的情况并不少见.

如果你喜欢做回声“字符串”>& 2你可以让你的回声也转到stderr,或者你可以在unbuffer命令或类似的工具中运行它,如果你有它们可用的话

猜你在找的Linux相关文章