shell 腳本學習

距離上一次寫東西又隔了一段時間了,期間一直跟着私房菜學習,還是沒養成定期做記錄的習慣,今天就來寫第一個腳本的編寫吧。

經過幾天的積累,學習了下shell腳本的編寫,目前掌握的還不太成熟,凡事從小入手肯定是沒錯的,先寫個簡單的吧(難的也不會寫o(╯□╰)o)。

這個腳本的執行方法,就是輸入生日來計算當前日期距離生日還有多少天,如果已經過完生日則計算來年生日的時間。

#!/bin/bash
#Program:
#    Calculate how long it takes to have a birthday .
#History     MG    First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/sbin:~/bin
export PATH
echo -e "輸入你的生日,格式:2016/04/07"
while [ "$bir" == "" ]
do
    read -p "請輸入你的生日:" bir
done
mbir=$(date -d "$bir" +%j)
curdate=$(date +%j)
difdate=$((10#$mbir-10#$curdate))    #這裏之所以變量之前加10#是將其轉換爲10進制再來進行計#算,不然後默認爲8進制會報錯。
if [ "$difdate" == 0 ];then
    echo "Happy birthday to you!"    #今天過生日
elif [ "$difdate -lt 0 ];then        #生日已過,則計算明年的生日
    echo "And have $((-$difdate+365)) days to live."
else
    echo "And have $difdate days to live."    #生日還沒過,輸出還有多久
fi

主要的還是利用date命令來進行日期的加減,通過read命令來進行用戶輸入生日,唯一需要注意的是換算成天數之後進行相減會出現“value too great for base”這個錯誤,網上查了資料說是要換算成10進制纔可以,變量前加“10#”進行運算錯誤消除。

腳本雖然簡單,一些細節方面可能也要再修改,不過剛開始來說還是收貨頗多的,繼續努力!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章