这是因为grep -q
一旦找到匹配项,就会立即以零状态退出。该zfs
命令仍在写入管道,但是没有读取器(因为grep
已退出),因此它SIGPIPE
从内核发送了信号,并且退出,状态为141
。
您看到此行为的另一个常见地方是head
。例如
$ seq 1 10000 | head -1
1
$ echo ${PIPESTATUS[@]}
141 0
在这种情况下,head
读取第一行并终止,产生SIGPIPE
信号并以seq
退出141
。
请参阅《Linux程序员指南》中的“臭名昭著的SIGPIPE信号 ”。