[dmtsai@study bin]$
vim cal_retired.sh
#!/bin/bash
# Program:
#
You input your
demobilization date, I calculate how many days before you demobilize.
# History:
# 2015/07/16
VBird
First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# 1.
告知用
户这
支程序的用途,并且告知
应该
如何
入日期格式?
echo "This program will
try to calculate :"
echo "How many days before your demobilization date..."
read
-
p "Please input your demobilization date (YYYYMMDD ex>20150716): " date2
# 2.
测试
一下,
这个输
入的
容是否正确?利用正
表示法
date_d=$(echo ${date2} |grep '[0
-
9]
\
{8
\
}')
#
看看是否有八
个数
if [
"${date_d}" == "" ]; then
echo "You input the wrong date format...."
exit 1
fi
# 3.
算日期
declare
-
i date_dem=$(date
--
date="${date2}" +%s)
#
退伍日期秒
declare
-
i date_now=$(date +%s)
#
在日期秒
declare
-
i date_total_s=$((${date_dem}
-
${date_now}))
#
剩余秒
数统计
declare
-
i date_d=$((${date_total_s}/60/60/24))
#
转为
if [ "${date_total_s}"
-
lt "0" ]; then
#
是否已退伍
echo "You had been demobilization before: " $((
-
1*${date_d})) "
ago"
else
declare
-
i date_h=$(($((${date_total_s}
-
${date_d}*60*60*24))/60/60))
echo "You will demobilize after ${date_d} days and ${date_h} hours."
fi
瞧一瞧,这支程序可以帮你计算退伍日期呢~如果是已经退伍的朋友,
还可以知道已经退伍多久了~
哈哈!很可爱吧~½本中的
date_d
变量宣告那个
/60/60/24
是来自于一天的总秒数
(24
小时
*60
*60
)
。瞧~全部的动作都没有超出我们所学的范围吧~
^_^
还能够避免用户输入错误的数字,所
以多了一个正规表示法的判断式呢~
这个例子比½难,有兴趣想要一探究竟的朋友,可以作一下
后练习题
关于计算生日的那一题喔!~加油!
12.4.2
利用
case ..... esac
判断
上个小½提到的『
if .... then .... fi
』对于变量的判断是以『比对』的方式来分辨的,
如果符合状态
就½行某些行为,并且透过½多层次
(
就是
elif ...)
的方式来½行多个变量的程序代码撰写,譬