Выполнение reload
из cron
оказалось недостаточным для обновления часового пояса. Однако запуск этой команды сработал:
service cron restart
Спасибо Джеффу Шаллеру за ваш комментарий .
Вы не можете использовать пробелы в назначениях оболочки для переменных. Таким образом, begin= ``awk...
просто инициализирует пустое значение, а затем пытается запустить вывод awk как команду. То же самое для end=
Два awk зависают, потому что вы не предоставили им никаких входных данных из файлов или стандартного ввода. Возможно, вы хотели просто сделать это в правиле BEGIN, а не из реальных данных.
Предположительно, вы собираетесь использовать awk только для того, чтобы получить пару символов из $var. Существуют опции оболочки, которые очень хорошо работают с подстроками --и для этого не нужно запускать awk.
awks не будет работать, потому что вы используете конструкцию оболочки для $awkvar. Вы не должны использовать $ внутри самого awk (, он обозначает номер поля внутри awk ).
Вы обнаружили оператор подстроки оболочки, но не показываете обновленный сценарий.
Новый сбой в if [ $begin = "-r" ]
связан с тем, что он расширяет $begin, а тест видит [ -r = -r ]
и считает -r вариантом. Если вы используете лучшую версию синтаксиса теста и процитируете его, это сработает.
paul $ begin="-r"
paul $ if [[ "${begin}" = "-r" ]]; then echo true; fi
true
paul $
Ваш код для разбора аргументов командной строки слишком сложен. Вместо этого используйте встроенный bash "getopts". См. примеры в https://stackoverflow.com/questions/16483119/an-example-of-how-to-use-getopts-in-bash.