当我运行以下脚本时:
#!/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?
我如何避免这种情况?