Неожиданный токен в переменной среды вызывает синтаксическую ошибку в облаке -init

Сегодня я установил поверх 2.4.0 на CentOS 7. Я пробовал несколько способов изменить интервал запуска службы, включая принятый здесь ответ, но без изменения статуса службы.

В конце концов я добился успеха, отредактировав /usr/share/atop/atop.daily, заменив LOGINTERVAL=600на LOGINTERVAL=60, что я подтвердил черезsystemctl status atop

Я знаю, что уже есть принятый ответ, но вот мой опыт работы с CentOS 7. Полагаю, я узнаю позже, делает ли это то, что я хочу.

0
12.05.2021, 01:49
1 ответ

Вам не нужно экранировать двойные кавычки в документе здесь -. Как у вас там, внешняя оболочка расширяет переменные, а оболочка, запущенная su, видит -p \"gy75k9([0y6se2v^\"буквально, обратная косая черта выходит из кавычек, а (не заключен в кавычки.

Без обратной косой черты должно работать, если пароль не содержит \, $, "или обратную косую черту. Или измените на одинарные кавычки, чтобы вам нужно было заботиться только об одинарных кавычках в пароле.

su - azureuser << EOF
...
az login --service-principal -u '$AZ_CLIENT' -p '$AZ_PASS' --tenant '$AZ_TENANT'
EOF

См. Экранирование переменной для использования в качестве содержимого другого скрипта о работе с произвольными значениями, включая одинарные кавычки.


В качестве альтернативы можно запустить оболочку, suрасширив переменные. Вам нужно будет заключить здесь -разделитель документа (или все знаки $в документе здесь -)и использовать su -p, чтобы сохранить переменные среды после su. И на этот раз необходимы двойные -кавычки, чтобы позволить внутренней оболочке расширить переменные.

export AZ_CLIENT AZ_PASS AZ_TENANT
su -p - azureuser << 'EOF'
...
az login --service-principal -u "$AZ_CLIENT" -p "$AZ_PASS" --tenant "$AZ_TENANT"
EOF
3
28.07.2021, 11:33

Теги

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