当前位置: 技术问答>linux和unix
求救SHELL的问题,SHELL高手帮忙多谢了
来源: 互联网 发布时间:2017-01-25
本文导语: 日期存放在文件A中(只存放日期20111201) 我想读取A文件的的日期,然后和系统时间(20111215)比较,当前日期和存放在A文件的日子进行比较,得到相减的结果我就循环几次 循环的过程 执行 test_boot 20111201~20111215 循环...
日期存放在文件A中(只存放日期20111201)
我想读取A文件的的日期,然后和系统时间(20111215)比较,当前日期和存放在A文件的日子进行比较,得到相减的结果我就循环几次
循环的过程 执行
test_boot 20111201~20111215
循环执行成功后把当前日期写到A 文件中
我不熟悉SHELL ,还请各位帮忙多谢了
我想读取A文件的的日期,然后和系统时间(20111215)比较,当前日期和存放在A文件的日子进行比较,得到相减的结果我就循环几次
循环的过程 执行
test_boot 20111201~20111215
循环执行成功后把当前日期写到A 文件中
我不熟悉SHELL ,还请各位帮忙多谢了
|
# cat A
20111201
20111202
# cat a.sh
#!/bin/bash
today=`date +%Y%m%d`
for time in `cat A`
do
i=`expr $today - $time`
if [ $i -gt 0 ];then
while [ $i -gt 0 ]
do
echo $i
((i--))
done
echo --------- $time done ----------
fi
done
#sh a.sh
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
--------- 20111201 done ----------
14
13
12
11
10
9
8
7
6
5
4
3
2
1
--------- 20111202 done ----------
如果没理解错,是这样吧
|
#!/bin/bash
today=`date +%Y%m%d`
for time in `cat A`
do
i=`expr $today - $time`
while [ $i -gt 0 ]
do
echo $i #这里改成你的SHELL_PROC $time
((i--))
done
echo --------- $time done ----------
done
发现if多余了点
|
楼上的没理解楼主的意图 "#这里改成你的SHELL_PROC $time” 这里楼主的意思是循环执行从$time到$today中间的每一天 而且`expr $today - $time` 只有当月才能那么减吧
我按照我在5楼的想法写了一个,跟楼主的流程不一样,但是可以得到楼主想要的结果
我按照我在5楼的想法写了一个,跟楼主的流程不一样,但是可以得到楼主想要的结果
#!/bin/sh
next_day()
{
nowday=$1
yy=`echo $nowday|cut -c 1-4`
mm=`echo $nowday|cut -c 5-6`
dd=`echo $nowday|cut -c 7-8`
date=`cal $mm $yy`
days=`echo $date|awk '{print $NF}'`
if [ $dd -eq $days ]; then
dd=01
mm=`expr $mm + 1`
[ $mm -ge 13 ] && mm=01 && yy=`expr $yy + 1`
nextday=$yy$mm$dd
else
nextday=`expr $nowday + 1`
fi
}
today=`date +%Y%m%d`
while read line
do
echo "---循环 $line~$today ---"
dealdate=$line
while [ $dealdate -le $today ]
do
echo "SHELL_PROC $dealdate"
next_day $dealdate
dealdate=$nextday
done
done