echo 打印太多空格
echo prints too many spaces
我在 echo
中有两个变量的代码。我不知道为什么它在 $NEXT
之前打印 spaces,即使我在代码中只有一个 space。
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 " Average file size .'$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
如果在值之前返回空格 -- 您已找到问题。
我在 echo
中有两个变量的代码。我不知道为什么它在 $NEXT
之前打印 spaces,即使我在代码中只有一个 space。
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 " Average file size .'$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
如果在值之前返回空格 -- 您已找到问题。