echo的打印空格

编辑一个脚本,实现批量验证文件的md5

<span style="font-size:18px;">#!/bin/bashmd5sum="/usr/bin/md5sum"count=0 #记录有多少个文件参与md5比较check=0 #记录有多少个文件md5是正确的while read linedoecho -e $line | $md5sum -cif [ $? -eq 0 ];thenlet check+=1filet count+=1done <md5sum.md5echo "共有$count个文件,其中有效文件$check"</span>然后执行的时候总是提示我格式不正确,,我的文件明明是md5sum生成的,怎么能不正确呢?

然后我单独执行

echo "dbdf9049296c84c1f295e8c467a210d0 /usr/bin/grub-mkrescue" | md5sum -c就显示正确,

然后偶然的机会我执行了

echo "dbdf9049296c84c1f295e8c467a210d0 /usr/bin/grub-mkrescue" | md5sum -c发现竟然错了。怎么可能呢?

我就开始仔细比对,晕,差了一个空格。然后灵光一闪想到echo $line会把连续的空格当作一个,

#!/bin/bashmd5sum="/usr/bin/md5sum"count=0 #记录有多少个文件参与md5比较check=0 #记录有多少个文件md5是正确的while read linedoecho -e "$line" | $md5sum -cif [ $? -eq 0 ];thenlet check+=1filet count+=1done <md5sum.md5echo "共有$count个文件,其中有效文件$check"学得时候要注意去深究这个问题,现在探究一下:

tmp="a b d"echo $tmpa b decho "$tmp"a b d

至于原因,需要了解shell的解析过程:

echo $tmp的执行过程为:

所以打印出来就是a b d,多个空格只显示了一个。

解释参考自:

其实你已经错过了旅行的意义。

echo的打印空格

相关文章:

你感兴趣的文章:

标签云: