Экспортируйте информацию Curl в файл, используя sed - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь получить адрес DNS с помощью curl, и я хотел бы использовать этот адрес DNS для замены слова в файле .js.

Итак, файл .js содержит слово "имя хоста", и я хотел бы заменить его на адрес DNS, полученный из curl, поэтому я пытаюсь сделать следующее.

sed 's/hostname/curl -s http://169.254.169.254/latest/meta-data/public-hostname/g' server.js

Я получаю сообщение об ошибке sed: -e expression #1, char 26: unknown option to s'

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Мне просто нужно было экранировать '/', и оно работает

sed 's/hostname/curl -s http:\/\/169.254.169.254\/latest\/meta-data\/public-hostname/g' server.js

Если вы хотите заменить внутри файла, вы можете использовать временный файл

sed 's/hostname/curl -s http:\/\/169.254.169.254\/latest\/meta-data\/public-hostname/g' server.js > temp.js
mv temp.js server.js

Естьлучшие способы сделать это, не уверен, что это соответствует вашим потребностям

0 голосов
/ 08 февраля 2019

Сначала нужно выполнить команду curl в подоболочке.Затем вам нужно использовать другой разделитель из-за '/' в Uris.'|'должно работать

dns_address=$(curl -s http://169.254.169.254/latest/meta-data/public-hostname)
sed "s|hostname|${dns_address}|g" server.js

Обратите внимание на двойные кавычки.Они необходимы для расширения переменной.

или если она должна быть в одной строке

sed "s|hostname|$(curl -s http://169.254.169.254/latest/meta-data/public-hostname)|g" server.js

, или, может быть, я неправильно понял вопрос, и вы хотите поместить фактическую команду вserver.js

sed 's|hostname|curl -s http://169.254.169.254/latest/meta-data/public-hostname|g' server.js

Похожие: Как использовать переменные в команде в sed?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...