LINUX.ORG.RU

sed подстановка переменных

 , ,


0

1

Есть виртуальная машина с CentOS7. Подключаясь к этой машине через консольку, т.е. tty1 в vmware делаю следующее:

$ ls test
test

$ cat test
IPADDR=10.9.0.201
--------------------------

CUR_ADDR=10.9.0.201
ADDR=1.1.1.1

$ sed -i "s/$CUR_ADDR/$ADDR/g" test
$ cat test
IPADDR=10.9.0.201

Т.е. адрес не меняется.

Если подключаюсь через ssh - подстановка отрабатывает и адрес меняется.

Вопрос - что я забыл? Почему через tty не отрабатывает?



Последнее исправление: Toten_Kopf (всего исправлений: 1)

Ответ на: комментарий от oS_a

Проблема решена. Я слепошара.

Я в шапке указал редуцированный результат моих изысканий, уже после некоторого убитого времени. Когда я уже добрался до проблемного участка в скрипте. На самом деле переменную 'CUR_ADDR' я получаю в результате

CUR_ADDR=$(hostname -I)

А результат '$(hostname -I)' возвращается с пробелом, мать его, в конце. Ну и понятное дело интересующие меня строки не совпадают по шаблону. А через ssh, в момент проверок, я в какой-то момент зафигачил переменную руками, без пробела.

Toten_Kopf
() автор топика
Ответ на: комментарий от IvanRia

Ну и так, чисто для установления правды:

$ ls aaa.sh test zzz
aaa.sh  test  zzz
--------------------------

$ cat aaa.sh
#!/bin/bash

. ./zzz

echo $CUR_ADDR
echo $ADDR

sed "s/$CUR_ADDR/$ADDR/g" test
------------------------------

$ cat zzz
CUR_ADDR=10.9.0.201
ADDR=1.1.1.1
------------------------------

$ cat test
IPADDR=10.9.0.201
-----------------------------

$ ./aaa.sh
10.9.0.201
1.1.1.1
IPADDR=1.1.1.1

Нафиг тут экспорт не упал.

Toten_Kopf
() автор топика
Последнее исправление: Toten_Kopf (всего исправлений: 1)