我想运行一个 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/

10-12 12:29
查看更多