免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1778 | 回复: 3
打印 上一主题 下一主题

请帮我看一下这个脚本有什么问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-07 00:38 |只看该作者 |倒序浏览
本帖最后由 demornov 于 2011-04-07 13:22 编辑

我想把硬盘里的数据用DVD备份,每张光盘用4400M,而且每张光盘需要有个list,于是我写了以下脚本:
#!/bin/bash

let fileSize=0
let totalSize=0
let diskCount=1

backupDate=`date +%Y-%m-%d`

if [ -d "$1" ];then
        find "$1" -type f | while read fileName
        do
                {
                fileSize=`ls -l "$1$fileName" | awk '{print $5}'`
                ((totalSize+=fileSize))
                if [ $totalSize -lt 4613734400 ]
                then
                        echo ${fileName} >> /home/list_DVD${diskCount}_$backupDate.txt
                        echo "Adding File: \"$fileName\". Current Size: $((totalSize/1024/1024))Mb"
                        continue
                fi
                        echo "-----------------------------------------------"
                        echo $((totalSize/1024/1024))Mb in Disk ${diskCount}
                        echo
                        let totalSize=0
                        ((diskCount++))
                        echo "Now Make Disk $diskCount"
                        echo "-----------------------------------------------"
                        continue
                }
        done
else
        echo 'Wrong backup directory!'
        exit 1
fi
能执行,可是结果是错误的,最后只有一个文件生成。但我直接在命令行执行的话:

let fileSize=0
let totalSize=0
let diskCount=1

backupDate=`date +%Y-%m-%d`

find /data -type f | while read fileName
do
{
fileSize=`ls -l "$flieName" | awk '{print $5}'`
((totalSize+=fileSize))
if [ $totalSize -lt 4613734400 ]
then
echo ${fileName} >> /home/list_DVD${diskCount}_$backupDate.txt
echo "Adding File: \"$fileName\". Current Size: $((totalSize/1024/1024))Mb"
continue
fi
echo "-----------------------------------------------"
echo $((totalSize/1024/1024))Mb in Disk ${diskCount}
let totalSize=0
((diskCount++))
echo "Now Make Disk $diskCount"
echo "-----------------------------------------------"
continue
}
done
这个却是正确的。纠结中,请懂的兄弟指点一下

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
2 [报告]
发表于 2011-04-07 09:56 |只看该作者
回复 1# demornov


    第一个代码的ls -l $1$fileName错了,fileName已经是全路径表示的了

论坛徽章:
0
3 [报告]
发表于 2011-04-07 13:16 |只看该作者
确实如此,多谢指点!

论坛徽章:
0
4 [报告]
发表于 2011-04-07 13:20 |只看该作者
确实如此,多谢指点!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP