Bash echo打印的空间太多

Bash echo打印的空间太多,bash,unix,posix,dash-shell,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 如果最后一行是输出,那么它似乎是显示代码以外的其他内容的输出。当输出看起来很奇

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

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

回显平均文件大小。“$ext”:“$AEXT” 这样,您就可以知道空格或制表符是来自变量本身还是来自脚本。

您的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

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

如果需要帮助,您需要提供所有相关代码。要么$NEXT包含空格,要么是选项卡。我的错误。。。现在应该可以了。在$NEXT之前是空格。您指定如何设置$NEXT的注释需要在问题中。