我想运行一个find
命令,然后计算输出的行数并给出结果的输出。我的直截了当的方法是:
output=$(find ...)
lines=$(echo "$output" | wc -l)
echo "$output"
但不幸的是,使用 echo
将其通过管道传输到 wc
会添加一个换行符,因此即使 find
没有找到任何内容(零行输出),wc
给出了 1
(对于 echo
附加的换行符。
我将 echo
更改为 printf
以防止将换行符附加到输出,但随后也将 find
的单行输出更改为 printf
var/
没有换行符,因此 wc
给出了 0
。
问题在于捕获输出 ($(...)
)。它去除了在我的情况下相关的尾随换行符。
这能以某种方式避免吗?
我的原始任务是否有完全不同的方法?
最佳答案
想到的一个简单解决方法是检查字符串是否为空:
[ -z "$output" ] && count=0 || count=$(wc -l <<< "$output")
如果 find
没有产生任何输出,那么 count
将为 0
,否则它将包含输出中的行数。
关于bash - 捕获输出并计算其行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23295161/