背景
早上7.30--7.45 執行自動做早餐的任務,中午11.52--12.15 執行做飯任務,下午17:23--17.40 執行自動澆花任務;
核心點
- 如何獲取當前時間?獲取的時間格式如何自定義?
- 在不同時間(這個是判斷條件),做不同的任務;
- 如果編寫一個時間區域,並和當前時間比較;
目錄
shell 獲取當前時間、自定義格式
1)2019年 04月 24日 星期五 21:26:35 CST (這裏原格式輸出當前的時間)
time=$(date)
echo $time1
2)20190424212635 (這裏我們自定義數據格式)
#!bin/bash
time=$(date "+%Y%m%d%H%M%S")
echo $time2
解析:%Y 代表 年 即2019; %m 代表 月 即04; %d 代表 日 即24;
%H 代表 小時 即21; %M代表 分鐘 即26; %S代表 秒 即35;
年,月,日,時,分,秒 的英文意思:Year, month, day, hour, minute, second
3)2019-04-24 21:26:35
#!bin/bash
time=$(date "+%Y-%m-%d %H:%M:%S")
echo $time
相信大家看了三個例子,應該會獲取的時間,並自定時間格式了。
4)2019.04.24
這個先不公佈代碼啦,知道你們會的,滑稽😀
對了大家注意一下:date後面有一個空格,時間格式中(變量賦值)前後不要有空格
shell判斷語句
if 判斷語句格式
if 條件
then
Commandelif 條件
then
Commandelse
Command
fi
fi #別忘了這個結尾
shell 判斷條件
1)test 命令
# if test 1 = 1 ; then echo 'ok'; fi
ok
# test 1 = 1 && echo 'ok'
ok
= 等於 應用於:整型或字符串比較 如果在[] 中,只能是字符串
&& 邏輯的 AND 的意思, -a 也是這個意思
# test 1 -eq 1 && echo 'ok'
ok
-eq 等於 應用於:整型比較
注意:所有字符 與邏輯運算符直接用“空格”分開,不能連到一起。test 1=1就是錯誤的!
2)[ ] 表達式
# [ 1 -eq 1 ] && echo 'ok'
ok
# [ 2 < 1 ] && echo 'ok'
-bash: 2: No such file or directory
# [ 2 \< 1 ] && echo 'ok'
# [ 2 -gt 1 -a 3 -lt 4 ] && echo 'ok'
ok
# [ 2 -gt 1 && 3 -lt 4 ] && echo 'ok'
-bash: [: missing `]'
注意:在[ ] 表達式中,常見的>, <需要加轉義字符,表示字符串大小比較,以acill碼 位置作爲比較。
不直接支持<, >運算符,還有邏輯運算符|| , && 它需要用-a[and] –o[or]表示
參考:https://www.cnblogs.com/tony1314/p/8315666.html
代碼:
#獲取當前時間,格式是時分,例如當前是上午8:50,hh=850
hh=`date '+%H%M'`
#早上7.30--7.45 執行自動做早餐的任務
if [ $hh -ge 730 -a $hh -le 745 ]
then
echo " Morning -- Automatic breakfast "
#中午11.52--12.15 執行做飯任務
elif [ $hh -ge 1152 -a $hh -le 1215 ]
then
echo " Lunch time -- Cook "
#下午17:23--17.40 執行自動澆花任務
elif [ $hh -ge 1723 -a $hh -le 1740 ]
then
echo "night -- Automatic watering"
#不適合適的時間,不做什麼
else
echo "$hh Not within time "
fi
補充一下判斷語句中含義的:
-eq 等於 應用於:整型比較
-ne 不等於 應用於:整型比較
-lt 小於 應用於:整型比較
-gt 大於 應用於:整型比較
-le 小於或等於 應用於:整型比較
-ge 大於或等於 應用於:整型比較
-a 雙方都成立(and) 邏輯表達式 –a 邏輯表達式
-o 單方成立(or) 邏輯表達式 –o 邏輯表達式
-z 空字符串
-n 非空字符串
彩蛋
有些任務需要一直執行,這時需要在循環中。
while true;do
#獲取當前時間,格式是時分,例如當前是上午8:50,hh=850
hh=`date '+%H%M'`
#早上7.30--7.45 執行自動做早餐的任務
if [ $hh -ge 730 -a $hh -le 745 ]
then
echo " Morning -- Automatic breakfast "
#中午11.52--12.15 執行做飯任務
elif [ $hh -ge 1152 -a $hh -le 1215 ]
then
echo " Lunch time -- Cook "
#下午17:23--17.40 執行自動澆花任務
elif [ $hh -ge 1723 -a $hh -le 1740 ]
then
echo "night -- Automatic watering"
#不適合適的時間,不做什麼
else
echo "$hh Not within time "
fi
sleep 5 #休息5s
out_time=`date '+%Y-%m-%d-%H:%M'` #格式:2019-04-24-21:26
echo "$out_time"
done
希望對你有幫助。
如果有不對的地方歡迎指正。