echo打印太多空格

时间:2016-03-20 01:04:51

标签: bash unix posix dash-shell

我在echo中有两个变量的代码。我不知道为什么它会在$NEXT之前打印空格,即使代码中只有一个空格。

NEXT=$(find "${DIR}" -type f -name "*.$ext" | sed "s/.*\/\.//g" | sed "s/.*\///g" |
sed -n '/.*\..*/p' | wc -l)
echo "Files .$ext: $NEXT"

Files .tar:        1

2 个答案:

答案 0 :(得分:1)

您的find表达式没有按照您的想法执行:

NEXT=$(find "${DIR}" -type f -name "*.$ext" | sed "s/.*\/\.//g" | sed "s/.*\///g" |
sed -n '/.*\..*/p' | wc -l)

当您管道wc -l时,您将获得号码。数字的格式将取决于wc的发行版默认编译选项。通常当信息管道重定向wc时,返回的值应该没有任何前导空格(但不能保证您的{{1}安装将以这种方式工作)。所有你可以做的测试,看看结果,例如

wc

如果在值之前返回空格 - 您已找到问题。

答案 1 :(得分:0)

如果最后一行是输出,那么它似乎是显示代码之外的其他输出。当您的输出看起来很奇怪时,请尝试在每个变量周围加上单引号:

echo "  Average file size .'$ext': '$AEXT'"

这样,您就会知道,如果空格(或制表符)来自变量本身或来自脚本。