我正在尝试使用curl获取dns地址,我想使用该dsn地址替换.js文件中的单词。
.js文件包含一个“主机名”一词,我想用从curl获取的dns地址替换它,所以我想这样做。
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'
答案 0 :(得分:0)
您首先需要在子Shell中执行curl命令。然后,由于URI中的“ /”,您需要使用其他分隔符。 '|'应该工作
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
答案 1 :(得分:0)
我只需要转义'/'就可以了
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
有更好的方法可以做到这一点,不确定是否满足您的需求