Shell脚本:如果系统时间等于给定时间,则触发命令

时间:2013-09-02 13:57:13

标签: linux bash shell

我是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

感谢您的帮助。

5 个答案:

答案 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]