gpt4 book ai didi

linux - tee 命令未按预期工作(使用读取和回显)

转载 作者:IT王子 更新时间:2023-10-29 00:46:23 27 4
gpt4 key购买 nike

脚本和输出如下:

脚本:

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

输出:

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

我正在尝试将输出附加到日志文件。但是正如您在输出中看到的那样,似乎首先读取被执行然后回显,这与预期不同。

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

最佳答案

read -p 正在将其输出写入 stderrecho 正在写入 stdoutstdout 通常会被缓冲,而 stderr 不会,因此经常会看到 stderr 出现在 stdout 之前.

你可以让你的 echo 也去 stderr 如果你喜欢做 echo "string">&2 或者你可以运行它unbuffer 命令或类似工具(如果有的话)

关于linux - tee 命令未按预期工作(使用读取和回显),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36987217/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com