有沒有辦法在bash中按給定時間間隔重新執行命令? 我希望天氣每30分鐘重新執行一次。 這裏就是比如我的腳本:在bash中按給定時間間隔重新執行命令
#!/bin/bash
#Show time, date and clickable calendar
clock() {
curtime=`date '+%I:%M'`
curdate=`date '+%d-%m-%Y'`
echo "%{A:/usr/bin/gsimplecal:}%{T2} %{T1}$curdate%{A} %{T2} %{T1}$curtime"
}
volume1() {
amixer get Master | sed -n 'N;s/^.*\[\([0-9]\+%\).*$/\1/p'
}
#weather
weather(){
curl -s "$(curl -s 'http://www.wunderground.com/' | sed -n '/Full Forecast/{s#[^"]*"\([^"]*\)".*#http://www.wunderground.com\1#p}')" | sed -n '/"curCond"/{ s#.*wx-value[^>]*>\([^<]*\)<.*#\1#; h }; /"curTemp"/{ N; N; N; s#.*wx-value[^>]*>\([^<]*\)<.*wx-unit[^>]*>°\(.\).*#\1°\2 #; G; s#\n##; p }'
echo $weather
}
while :; do
echo "%{B#DDecf0f1}%{F#2c2c2c}%{T2}%{l} $(groups) %{T1}$(curwin) %{r}%{F#2C2C2C} $(weather) $(space)|$(space) VOL: $(volume1) $(space)|$(space) $(uptime) $(space)|$(space) $(clock) %{A2}$(curwin)"
sleep 1 #sleep of mainloop
done
爲什麼不使用'cron'或'at'? –
克朗將重新執行整個腳本?我想只在腳本中重新執行「天氣」。什麼是? –
@LuisVito請準確顯示你想要每30分鐘執行一次。你是否試圖每30分鐘執行一次while循環,因爲目前在echo語句中的子shell'$()'中的每個函數調用都是每秒執行一次。請使用僞代碼澄清。 – jkdba