2016-06-22 4 views
0

Я получаю строку ввода из команды в make-файле.Команда Sed в make-файле

@read -p "Enter Web Url:" weburl; \ 

Я хочу использовать переменную weburl в моей команде ниже sed в make-файле.

@read -p "Enter Web Url:" weburl; \ 
sed 's/^\(ServerName:\)$/\1 $$weburl/' $(LOCALCONFIGDIR)/myfile.conf 

Но он не выполняет команду sed после прочтения ввода.

ответ

1

Будьте осторожны с $ войдите в Makefile, особенно когда используется в заявлении оболочки. Вы можете заменить команду sed с этим:

sed 's/^\(ServerName:\)$$/\1 '$$weburl'/' $(LOCALCONFIGDIR)/myfile.conf 

Примечание конец линии $$. Также обратите внимание, что подстановка переменных не может быть выполнена с помощью одиночной кавычки ', поэтому переменная находится за ее пределами.

С некоторыми sed оптимизации, я предпочел бы посоветовать вам следующее:

sed "/^ServerName:/s/$$/ $$weburl/" $(LOCALCONFIGDIR)/myfile.conf 
+0

Ввод URL вне каких-либо кавычек нежелательно, так как оболочка будет пытаться сделать расширение подстановочного и пробельную лексемизацию некотируемых значений. Но ответ на двойную цитату хорош. – tripleee