- 当通过管道
tee
将其标准输出发送到 no-op (:
) 命令时,不会打印任何内容并且文件大小为零。 - 当通过管道
tee
将其标准输出发送到 acat
时,所有内容都会正确打印并且文件大小大于零。
这是一个显示它的代码示例(以脚本的第一个输入参数为条件):
#!/usr/bin/env bash
log_filepath="./log.txt"
[ -f "$log_filepath" ] && { rm "$log_filepath" || exit 1 ; }
fail_tee="$1"
while IFS= read -r -d $'\n' line ; do
printf "%s%s\n" "prefix: " "$line" | \
tee -a "$log_filepath" | \
{
if [ -n "$fail_tee" ]; then
# Nothing is printed to stdout/terminal
# $log_filepath size is ZERO.
: # do nothing.
else
# Each line in the input is prefixed w/ "prefix: " and sent to stdout
# $log_filepath size is 46 bytes
cat
fi
}
done <<'EOF'
1
23
456
7890
EOF
不胜感激背后的解释。
我对 no-op:
命令的期望是它不应该阻止tee
将输出发送到文件。