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