分页: 1 / 1

哪里错了呢?

发表于 : 2009-04-10 22:21
qjse
cd ubuntu
for d in *; do
if [ -d "$d" ]; then
h=`date +%H`
while [ $h -ge 7 -a $h -lt 23 ]; do
h=`date +%H`
done
tar cvf "$d.tar" "$d"
fi
done

这个程序无法运行啊?我是菜鸟请指点一下
就是将ubuntu目录中所有的目录单独打包,然后存放到/backup分区中
7点以后程序暂停,23点继续运行。

Re: 这个想法如何实现?

发表于 : 2009-04-11 12:06
qjse
这样的功能如何实现? 高手指点一下~

Re: 这个想法如何实现?

发表于 : 2009-04-11 12:52
hellojinjie
貌似蛮复杂的

想想怎么做。。。thinking。。。

Re: 这个想法如何实现?

发表于 : 2009-04-11 21:53
aerofox

代码: 全选

cd ubuntu
for d in *; do
    if [ -d "$d" ]; then
        h=`date +%H`
        while [ $h -ge 7 -a $h -lt 23 ]; do
            h=`date +%H` 
        done
        tar cvf "$d.tar" "$d"
    fi
done

Re: 谢谢

发表于 : 2009-04-14 15:43
qjse
cd ubuntu
for d in *; do
if [ -d "$d" ]; then
h=`date +%H`
while [ $h -ge 7 -a $h -lt 23 ]; do
h=`date +%H`
done
tar cvf "$d.tar" "$d"
fi
done

这个程序无法运行啊?我是菜鸟请指点一下
就是将ubuntu目录中所有的目录单独打包,然后存放到/backup分区中
7点以后程序暂停,23点继续运行。

Re: 哪里错了呢?

发表于 : 2009-04-14 16:29
shyl
貌似很多问题噢。

首先,如果你的目的应该是每小时执行一次。那应该把判断时间的循环放在外面。
另外,建议你的程序每执行一次以后用sleep语句休眠一个小时,而不是轮询CPU。

所以,建议你试试这么写

#!/bin/bash
cd ubuntu
h=`date +%H`
while [ 1 -eq 1 ]; do
if [ $h -ge 7 -a $h -lt 23 ]; then
#do nothing
else
for d in *; do
if [ -d "$d" ]; then
tar cvf "$d.tar" "$d"
fi
done
fi

sleep 3600
h=`date +%H`
done

Re: 哪里错了呢?

发表于 : 2009-04-14 16:54
qjse
程序出现错误
./a: line 7: 在未预料的“else”附近出现语法错误
./a: line 7: `else'
也就是对ubutnu目录中的目录单独打包,到7点就暂停,23点开始直到打完

Re: 哪里错了呢?

发表于 : 2009-04-14 17:16
shyl
这样行不?

#!/bin/bash
cd ubuntu
h=`date +%H`
while [ 1 -eq 1 ]; do
if [ $h -lt 7 -o $h -ge 23 ]; then
for d in *; do
if [ -d "$d" ]; then
tar cvf "$d.tar" "$d"
fi
done
fi

sleep 3600
h=`date +%H`
done

Re: 哪里错了呢?

发表于 : 2009-04-14 17:58
pope123
shyl 写了:这样行不?

#!/bin/bash
cd ubuntu
h=`date +%H`
while [ 1 -eq 1 ]; do
if [ $h -lt 7 -o $h -ge 23 ]; then
for d in *; do
if [ -d "$d" ]; then
tar cvf "$d.tar" "$d"
fi
done
fi

sleep 3600
h=`date +%H`
done
nice

Re: 哪里错了呢?

发表于 : 2009-04-15 12:56
qjse
测试了一下,不能运行。
还有就是,这个程序需要添加什么参数吗?

Re: 哪里错了呢?

发表于 : 2009-04-16 9:48
pope123
shyl 写了:这样行不?

#!/bin/bash
cd ubuntu
h=`date +%H`
while [ 1 -eq 1 ]; do
if [ $h -lt 7 -o $h -ge 23 ]; then
for d in *; do
if [ -d "$d" ]; then
tar cvf "$d.tar" "$d"
fi
done
fi

sleep 3600
h=`date +%H`
done
这个程序可以运行阿,不用加任何参数的,把它放在跟ubuntu文件夹同一层的目录下运行就可以了。

Re: 哪里错了呢?

发表于 : 2009-04-16 16:36
hellojinjie
其实我想写个来练练手,但是楼主的需求描述不太详细啊