我是shell脚本的新手。 如果作为命令行参数的给定时间等于系统时间,则脚本应该触发命令,否则它应该等待(轮询)给定时间。
我从非常基础开始,但我只是被困在这里: - (
#!/bin/sh
now=$(date +%k%M)
cur="055" # should be given as command line arg
if ($now == $cur)
then
echo "Fire command here"
else
echo "poll for time"
fi
当我执行脚本时:
./script.sh: line 5: 055: command not found
poll for time
感谢您的帮助。
答案 0 :(得分:2)
我认为以上只是一个小的语法错误,而不是:
if ($now == $cur)
您可能希望这样做:
if [ $now -eq $cur ] #very basic comparison here, you may want to have a
#look at the bash comparisons
<强>更新强> 你能把变量改为吗,
$cur=$(date +%H%M)
如果您未提供输入,则应删除前面的空格
$now
now=$(echo $now | sed 's/\s//g') #this removes the spaces in the input
答案 1 :(得分:0)
您可以使用以下命令在特定时间运行程序:
crontab -e
和
0 14 * * * command
运行command
@ 14 PM(举例)
答案 2 :(得分:0)
begin="`date '+%s'`"
final=... #should be converted to seconds since epoch...
sleep $((final - begin))
exec_your_command
答案 3 :(得分:0)
你所描述的问题似乎正是crontab旨在处理的问题,来自wikipedia“Cron由crontab(cron表)文件驱动,这是一个配置文件,它指定在给定的周期运行的shell命令调度“。
这是quick reference,它是相关的准系统,但应足以确定它是否符合您的需求。
答案 4 :(得分:0)
使用以下代码
if [$ now == $ cur]