Попробовать
touch ./*
Это избегает ненужного for
цикл, который породил бы новый процесс для каждого файла и работы для всех имен файлов, даже с пробелами или, которые похожи на опции (как -t
). Единственное время это не работало бы, - то, если бы у Вас нет (неточечных) файлов в каталоге, в этом случае, Вы закончили бы тем, что создали названный файл *
. Избегать что, для конкретного случая touch
большинство реализаций имеет a -c
опция (также названный --no-create
в версиях GNU) для не создания несуществующих файлов, т.е.
touch -c ./*
См. также хорошие ссылки в ответе jasonwryan, а также этом.
Запишите второй сценарий, который делает фактическое вычисление и сохраняет результат в файл:
# calculate $curval
echo $curval > /var/foo/value.txt
Запланируйте его с cron
работать каждые 2-3 часа.
За "каждые 10 минут" сценарий, просто считайте текущее значение из файла:
curval=`cat /var/foo/value.txt`
Хорошее улучшение должно назвать сценарий вычисления с "каждых 10 минут" сценарием если value.txt
файл еще не существует. Вы могли даже заставить его добавить crontab
запись, если это отсутствует.
Я согласился бы с записью результата в файл, установил бы переменную в файле
curval=the_value
Затем в оболочке (или другой сценарий)
source current_variable_value_result_file
$curval
для предотвращения проблем с IFS, и необходимо также использоватьprintf
, поскольку Вы не можете сказать то, что находится в файле, таким образом,echo
небезопасно (это могло передать любой аргумент эху). Кроме того, нет никакой потребности вызвать внешнюю командуcat
считать файл в переменную когдаbash
может сделать это само, в форме$(</var/foo/value.txt)
. – Chris Down 21.09.2011, 17:17