标签:
编辑一个脚本,实现批量验证文件的md5
<span style="font-size:18px;">#!/bin/bash md5sum="/usr/bin/md5sum" count=0 #记录有多少个文件参与md5比较 check=0 #记录有多少个文件md5是正确的 while read line do echo -e $line | $md5sum -c if [ $? -eq 0 ];then let check+=1 fi let count+=1 done <md5sum.md5 echo "共有$count个文件,其中有效文件$check"</span>然后执行的时候总是提示我格式不正确,我的文件明明是md5sum生成的,怎么能不正确呢?
然后我单独执行
echo "dbdf9049296c84c1f295e8c467a210d0 /usr/bin/grub-mkrescue" | md5sum -c就显示正确,
然后偶然的机会我执行了
echo "dbdf9049296c84c1f295e8c467a210d0 /usr/bin/grub-mkrescue" | md5sum -c发现竟然错了。怎么可能呢?
我就开始仔细比对,晕,差了一个空格。然后灵光一闪想到echo $line会把连续的空格当作一个,
#!/bin/bash md5sum="/usr/bin/md5sum" count=0 #记录有多少个文件参与md5比较 check=0 #记录有多少个文件md5是正确的 while read line do echo -e "$line" | $md5sum -c if [ $? -eq 0 ];then let check+=1 fi let count+=1 done <md5sum.md5 echo "共有$count个文件,其中有效文件$check"
tmp="a b d" echo $tmp a b d echo "$tmp" a b d
至于原因,需要了解shell的解析过程:
echo $tmp的执行过程为:
所以打印出来就是a b d,多个空格只显示了一个。
解释参考自:http://witmax.cn/shell-echo-spaces.html标签:
原文地址:http://blog.csdn.net/havedream_one/article/details/45247345