相关疑难解决方法(0)

是否有针对此 Broken Pipe 错误的解决方法?

当我运行以下脚本时:

#!/bin/bash
cat /dev/urandom | tr -dc '[:graph:]' | head -c 64
Run Code Online (Sandbox Code Playgroud)

(它应该打印 64 个随机字符,它确实如此)

我得到以下输出:

Kn5Thh'H]F2NMG3^2(T*GdH]C+|Y0uj%C?LGFo=9d9o%vcP9k~6u~Q&exr`RuQv{./myScript: line 2: 21677 Broken Pipe             cat /dev/urandom
     21678                       | tr -dc '[:graph:]'
     21679 Done                    | head -c 64
Run Code Online (Sandbox Code Playgroud)

为什么我收到Broken Pipe错误?是不是因为cat没有完成打印但head已经完成,所以它发送了一个SIGPIPE

我如何避免这种情况?

bash pipe

6
推荐指数
1
解决办法
2964
查看次数

通过尾部和头部通过T形管道文件

这里开始,我尝试读取文件并发出文件的头部和尾部(仅读取文件一次).

我尝试了以下方法: tee >(head) >(tail) > /dev/null < text.txt

这行按预期工作,但我想摆脱/ dev/null.所以我尝试过: tee >(head) | tail < text.txt

但是这条线不能按预期工作(好吧,正如我预期的那样),它会打印头部,但之后不会返回.显然尾巴正在等待什么.但我不知道具体到底是什么.我发现了这个问题,但是我无法用给定的答案运行它.

bash shell tee

3
推荐指数
1
解决办法
2921
查看次数

标签 统计

bash ×2

pipe ×1

shell ×1

tee ×1