Примерно так должно работать:
sed -i.bak "s/broadcast_rpc_address:/broadcast_rpc_address: $(hostname -i)/" /etc/scylla/scylla.yaml
Это заменит broadcast_rpc_address:
на broadcast_rpc_address: $(hostname -i)
.Теперь, поскольку эта строка в двойных кавычках, а не в одинарных, она говорит оболочке интерпретировать некоторые магические последовательности внутри строки.В частности, $(somecommand)
означает запуск некоторой команды и вставку ее вывода в строку.Конечно, замените «hostname -i» в команде, которую я дал выше, на все, что вы хотите (это может быть даже целый конвейер.
В вашей первоначальной попытке использовалось то, что начиналось с $hostname
. Этот синтаксис,$hostname
, не запускает команду hostname
, а ищет переменную с именем hostname
, что не соответствует вашим требованиям. Вместо этого вам нужен синтаксис * 1013. * В вашей первоначальной попытке также были проблемы с вложеннымцитаты, которые не работают.