有没有办法在bash中按给定的时间间隔重新执行命令? 我希望天气每30分钟重新执行一次。 这是我的脚本的例子:
#!/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
答案 0 :(得分:1)
我建议您使用 cron 定期运行脚本。
如果您只想从脚本运行特定功能(例如weather()
),请在脚本中添加一个switch语句,在该脚本中您将检查是否提供了某个选项,例如{{ 1}}用于执行-w
函数。
当您将 crontab 编辑为每30分钟运行一次(即weather()
)时,请为您的脚本提供0,30 * * * * my_script
,以便仅执行-w
- {{ 1}}