我正在尝试设置net.ipv4.ip_forward
为 1 in /etc/sysctl.conf
.以下工作正常,但它肯定会遗漏一些边缘情况
#Enable IP packet forwarding so that our VPN traffic can pass through.
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
sed -i 's/#net.ipv4.ip_forward = 1/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
grep -qF "net.ipv4.ip_forward" /etc/sysctl.conf || echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
例如,如果 sysctl.conf 包含以下任何一项,它将不匹配
#net.ipv4.ip_forward=1
##net.ipv4.ip_forward=1
.
有没有更可靠的方法来修改配置文件中的设置?
您可以使用该-r
开关启用扩展正则表达式(ERE
),GNU sed
并可选择匹配空白和#
与正则表达式?
可选项目锚点的出现,
sed -ir 's/#{1,}?net.ipv4.ip_forward ?= ?(0|1)/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
这将匹配以下任何输入行并使用替换部件对其进行修改 net.ipv4.ip_forward = 1
net.ipv4.ip_forward=0
net.ipv4.ip_forward = 0
#net.ipv4.ip_forward=0
##net.ipv4.ip_forward = 0
#net.ipv4.ip_forward=1
##net.ipv4.ip_forward=1
#net.ipv4.ip_forward = 1
##net.ipv4.ip_forward = 1
请参阅RegEx 演示以获得更清晰的信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句