bsp;awk -F":" '{print $2}')
if [ ! -e "$item_filename" ]; then
AddRecord "$item_filename missing"
AddError
fi
acture_md5=$(md5sum "$item_filename" | awk '{print $1}')
if [ "$item_filemd5" = "$acture_md5" ]; then
continue
else
AddRecord "$item_filename" "md5 diff! file:" "$item_filemd5" "acture:" "$acture_md5"
AddError
fi
done </tmp/MachineDecDir/check_md5list
while read xxx; do
...
done </filename
循环读取文件名 filename 所指向的文件的内容,每读取一行存入 xxx 变量。read xxx
为 while 语句的判断语句,判断语句和 do
如果不在同一行,则 ;
可省略,如:
while read xxx
do
...
done </filename
read 后边的 -r
表示读取内容过程中对特殊字符有效,如 /
(输入未结束需要换行继续输入的特殊符号),'/n' 等等。
[ -n "${line}" ]
判断 line 的内容不为空。而前边的 '||' 表示前一语句 read -r line
返回 false 才执行这个语句。
[ "$line" = "" ] && continue
表示如果 line 的内容为空则执行 continue;continue 命令用于跳过当前循环内容回去执行 while 判断语句。
item_filename=$(echo "$line" | awk -F":" '{print $1}')
声明变量 item_filename 并以后边语句执行结果赋值。awk -F":" '{print $1}')
将输入的内容按照 :
来划分字段并输出第1个字段。awk -F":" '{print $2}')
则是将输入的内容按照 ':' 来划分字段并输出第2个字段。
if [ ! -e "$item_filename" ]
用于判断变量 item_filename 代表的文件名所指的文件是否不存在。!
表示取反。if 判断的内容为 true 则执行 then 后边的语句,直到 fi 为止,否则跳过。
md5sum "$item_filename"
表示计算变量 item_filename 代表的文件名所指的文件的MD5值。
| awk '{print $1}'
将前一语句的输出通过管道连接到后边的这个语句的输入,默认按照空格划分内容并输出第1个字段内容。
if [ "$item_filemd5" = "$acture_md5" ]; then
判断 item_filemd5 和 acture_md5 所代表的内容作为字符串是否一样,是则执行 then 后的语句。continue 指示程序执行流程直接回到执行 while 判断语句。else 后的语句块当 if 的判断条件不为 true 时执行。
#找到 U 盘路径
UDiskMountDir=$(df | grep /mnt/sd | awk 'END{print $NF}')
#校验mcu程序版本,U盘下有mcuversion.txt才校验
UDiskMountDirfile="${UDiskMountDir}/SpecialDir/mcuversion.txt"
CurMcuVersionFile="/tmp/mcuversion.txt"
if [ -f "$UDiskMountDirfile" ]; then
TargetMcuVersion=$(cat "$UDiskMountDirfile")
if [ -f "$CurMcuVersionFile" ]; then
CurMcuVersion="$(cat "$CurMcuVersionFile")"
if [ "$TargetMcuVersion" !=&nb