我正在开发一个部署脚本"我希望能够在没有双重条目的情况下再次运行#34;
我正在尝试添加一个sed命令来查找" address"字段,如果它不存在,则创建它,如果确实存在,则将其修改为正确的IP地址。
这就是我到目前为止......
#!/bin/bash
ipaddress=192.168.1.1
sudo grep -q '^address' /etc/network/interfaces && sudo sed -i 's/^address.*/"address $ipaddress"/' /etc/network/interfaces || echo "address ${ipaddress}" >> /etc/network/interfaces
如果没有条目,它将创建正确的条目,但如果条目存在或正确,我会遇到各种问题。
非常感谢任何帮助!
最终答案基于" 1stSi Dave"以下
如果条目不存在或更改任何现有地址条目,则创建条目的最终工作脚本为:
sudo grep -q '^address' /etc/network/interfaces && sudo sed -i -e 's/^address.*/address '$ipaddress'/' /etc/network/interfaces || echo "address ${ipaddress}" >> /etc/network/interfaces
答案 0 :(得分:0)
首先,我认为你的sed命令需要'-e'命令行选项:
sed -i -e 's/...'
也许这是一个错字,因为你的命令行的其余部分表示你想要附加到文件,而不是编辑到位。接下来,单引号隐藏了您尝试在sed命令脚本中实现的变量扩展。他们还在输出中保留双引号,我认为这不是你想要的。试试这个:
sed -e 's/^address.*/address '$ipaddress'/' /etc/network/interfaces
第三,您可能希望在“地址”标记之前包含空格的可能性。最后,您可能执行想要就地编辑(使用sed -i),因为在文件末尾添加编辑的行可能无法正常工作。