距離上一次寫東西又隔了一段時間了,期間一直跟着私房菜學習,還是沒養成定期做記錄的習慣,今天就來寫第一個腳本的編寫吧。
經過幾天的積累,學習了下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#”進行運算錯誤消除。
腳本雖然簡單,一些細節方面可能也要再修改,不過剛開始來說還是收貨頗多的,繼續努力!