Предполагая, что «хост» имеет один IP-адрес, вы можете сделать что-то вроде:
MYHOSTIP=$(host `hostname` | head -n 1 | awk '{ print $NF; }') mycli servie --host $MYHOSTIP
Благодаря @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.
Вот и все!