【问题标题】:mkfifo - create a file that never experiences EOF etcmkfifo - 创建一个永远不会遇到 EOF 等的文件
【发布时间】:2018-10-17 22:33:46
【问题描述】:

我有这个脚本:

mkfifo foo
exec 3<>foo
cat <&3 | while read line; do echo " [prepend] $line"; done &

echo "foo" >&3
echo "bar" >&3
echo "baz" >&3

我只是想在每个命令的 stdout/stderr 的每一行添加一个字符串。

问题是命名管道会遇到EOF,所以cat命令会很快退出。

我可以使用一些文件来代替永远不会遇到 EOF 的命名管道吗?这样对它使用的 cat 命令基本上永远不会退出?

我可以使用tail -f 而不是cat,但我发现tail -f 有时会很奇怪。

【问题讨论】:

标签: bash shell exec cat tail


【解决方案1】:

要做我想做的事,这可能是一种更简单的技术:

https://unix.stackexchange.com/questions/442461/using-process-substitution-only-send-stderr-to-process

exec 2> >( while read line; do echo " stderr: $line"; done )
exec > >( while read line; do echo " stdout: $line"; done )

echo "rolo"
echo "cholo" >&2

exec 调用将进行设置,以便脚本的 stdout 和 stderr 设置为进程替换中的进程。

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 2013-07-20
    • 2017-08-19
    • 2012-09-14
    • 1970-01-01
    • 2022-12-13
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    相关资源
    最近更新 更多