回显打印的空格太多



我在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

你的find表达式没有做你认为的那样:

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

当您通过管道连接到wc -l时,您只剩下一个数字。数字的格式将取决于您的发行版的默认编译选项wc 。虽然通常当信息通过管道传输重定向wc时,返回的值应该没有任何前导空格(但不能保证您安装的wc会以这种方式工作)。您可以做的测试并查看结果,例如

ls "$HOME" | wc -l

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

如果最后一行是输出,那么它似乎是显示代码以外的其他内容的输出。当你的输出看起来很奇怪时,试着在每个变量两边加上单引号:

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

这样,您将知道空格(或制表符)是来自变量本身还是来自脚本。

最新更新