2013-09-02 2 views
0

Я очень новичок в сценариях оболочки. Сценарий должен запускать команду, если заданное время в качестве аргумента командной строки равно системному времени, иначе оно должно ждать (опрос) за заданное время.Сценарий оболочки: запускайте команду, если системное время равно заданному времени

Я начал с самых основ, но я застрял здесь только :-(

#!/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

Спасибо за помощь .

+4

Вы знаете, [ 'cron'] (http://en.wikipedia.org/wiki/cron) может вызвать команду заданное время –

+0

Вы говорите о 'cron jobs'? – james

+0

Проверить [Как узнать дату с терминала и сравнить с текущей датой] (http://stackoverflow.com/q/14501734/802365). –

ответ

2

Я думаю, что приведенное выше лишь небольшая ошибка синтаксиса, вместо:

if ($now == $cur) 

Вы можете сделать это:

if [ $now -eq $cur ] #very basic comparison here, you may want to have a 
         #look at the bash comparisons 

Update Могли бы вы изменить переменную,

$cur=$(date +%H%M) 

И в случае, если вход не предоставлен вами, вы должны удалить место перед $now

now=$(echo $now | sed 's/\s//g') #this removes the spaces in the input 
+0

если я использую 'if [$ now -eq $ cur]', я получаю './script.sh: строка 5: [: missing '] '' 'опрос за время', я не знаю почему? – james

+0

Вы помещали пробел между '[' и '$ now'? – Juto

+0

Я использовал предложенный вами синтаксис, он отражает ошибку: './script.sh: строка 5: [: missing'] '' – james

0

Вы можете запустить программу @ определенное время с:

crontab -e 

и

0 14 * * * command 

для запуска command @ 14 часов (на примере)

0
begin="`date '+%s'`" 
final=... #should be converted to seconds since epoch... 
sleep $((final - begin)) 
exec_your_command 
+0

Спасибо, он выполняет задание, но рассчитывает секунды, так как эпоха не является удобной для пользователя. :-( – james

0

Проблема, которую вы описали, кажется, именно то, что кронтаб предназначен для обработки, от wikipedia «Крон управляется файлом кронтаб (хрон таблицы), конфигурационный файл, который определяет команды оболочки периодически запускать на данном графике.»

Вот quick reference, он reletively скелетным , но должно быть достаточно, чтобы определить, соответствует ли оно вашим потребностям.

0

Используйте следующий код

если [$ Теперь == $ дворняжка]

Смежные вопросы