Перенаправление Makefile внутри документа cat, исчезающие переменные и разрывы строк

не рекомендуется использовать passwd как root для изменения паролей пользователей на сервере NIS. Вы должны использовать yppasswd . Эта команда требует пароль root для изменения пароля пользователя. это используется, чтобы добавить немного безопасности (вы должны быть администратором Nis).

2
30.03.2017, 03:19
1 ответ

Из раздела Здесь документы man bash

Формат документов здесь:

  < <[-] слово 
здесь-документ 
разделитель 
 

Не выполняется расширение параметров и переменных, подстановка команд , арифметическое раскрытие или раскрытие имени пути { {1}} на слово. Если какие-либо символы в слове заключены в кавычки, разделитель является результатом удаления кавычек в слове, и строки в здесь-документе не расширяются. Если слово не заключено в кавычки, все строки здесь-документа подвергаются расширению параметров, замене команды и арифметическому расширению, последовательность символов \ будет игнорируется, а \ необходимо использовать для заключения в кавычки символов \, $ и `.

Поскольку в вашем примере MAKE не заключен в кавычки, \ игнорируется, а $ @ расширяется (до предположительно пустого списка параметров).

Решение заключается в цитировании (любой части) маркера, например

cat <<\MAKE >> /etc/apache2/sites-available/Makefile1

или

cat <<"MAKE" >> /etc/apache2/sites-available/Makefile1

или для обеспечения необходимых экранирований, например \\ для продолжения линий и \ $ @ для $ @

2
27.01.2020, 22:10

Теги

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