我有两个变量的代码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
你的find
表达没有做你认为的那样:
NEXT=$(find "${DIR}" -type f -name "*.$ext" | sed "s/.*\/\.//g" | sed "s/.*\///g" |
sed -n '/.*\..*/p' | wc -l)
当您使用管道时,wc -l
您会留下一个Number。数字的格式将取决于您的发行版默认编译选项wc
。虽然通常当信息通过管道传输或重定向到wc
返回的值时,应该没有任何前导空格(但不能保证您的安装wc
会以这种方式工作)。所有你可以做的测试,看看什么结果,例如
ls "$HOME" | wc -l
如果在值之前返回空格 - 您已经找到了问题。
如果最后一行是输出,那么它似乎是显示代码之外的其他内容的输出。当您的输出看起来很奇怪时,请尝试在每个变量周围加上单引号:
echo " Average file size .'$ext': '$AEXT'"
这样,您将知道空格(或制表符)是来自变量本身还是来自脚本。