Выполнение sed выдает ошибку «неожиданный EOF при поиске соответствия»

Предполагая, что «хост» имеет один IP-адрес, вы можете сделать что-то вроде:

MYHOSTIP=$(host `hostname` | head -n 1 | awk '{ print $NF; }') mycli servie --host $MYHOSTIP
0
04.08.2020, 22:21
1 ответ

Благодаря @Quasimodo мне наконец удалось решить эту проблему.

Сначала я улучшил читаемость PATTERN, разделив REGEXPи REPLACEMENTна две отдельные переменные.
Затем в основном то, что я сделал, это изменить одинарные -кавычки на двойные -кавычки и наоборот.

REGEXP="preserve_hostname:\sfalse"
REPLACEMENT="preserve_hostname: true\nmanage_etc_hosts: false"
PATTERN="s/$REGEXP/$REPLACEMENT/"
su - $USERNAME -c "sudo -S bash -c 'sed -n -i \"$PATTERN\" /etc/cloud/cloud.cfg'" <<< $USERPWD

Обратите внимание, что я избежал двойных -кавычек вокруг $PATTERNв команде sed.
Вот и все!

1
18.03.2021, 23:14

Теги

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