分页: 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
其实我想写个来练练手,但是楼主的需求描述不太详细啊