Сценарий зацикливается/зависает при использовании команды awk

Выполнение reloadиз cronоказалось недостаточным для обновления часового пояса. Однако запуск этой команды сработал:

service cron restart

Спасибо Джеффу Шаллеру за ваш комментарий .

1
20.04.2020, 05:57
2 ответа

Вы не можете использовать пробелы в назначениях оболочки для переменных. Таким образом, 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 $ 
1
19.03.2021, 02:27

Ваш код для разбора аргументов командной строки слишком сложен. Вместо этого используйте встроенный bash "getopts". См. примеры в https://stackoverflow.com/questions/16483119/an-example-of-how-to-use-getopts-in-bash.

-1
19.03.2021, 02:27

Теги

Похожие вопросы