【发布时间】:2018-02-10 21:43:31
【问题描述】:
当我运行以下脚本时:
#!/bin/bash
cat /dev/urandom | tr -dc '[:graph:]' | head -c 64
(它应该打印 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
为什么我会收到 Broken Pipe 错误?是不是因为cat没有完成打印但是head已经完成了,所以它发送了SIGPIPE?
如何避免这种情况?
【问题讨论】:
-
你为什么要用无用的猫?
-
作为一种变通方法,使用
2>/dev/null重定向。