我正在编写一个脚本,每隔一段时间更改一次IP地址,但由于某种原因我无法正常工作
sed "s/$curLine/$nextLine/" </etc/network/interfaces>/etc/network/interfaces.new
,即使我改变了结尾/ g,我也总会得到“sed unterminated`s”命令“
这是我的变量$ curLine和$ nextLine:
#Find current ip from /etc/network/interfaces
curLine=$(sed -n "/address/p" /etc/network/interfaces)
#Find location of current ip in ips.txt.
newLine=$(sed -n "/$curLine/=" ips.txt)
#Check and set next ip
nextIP=$(($newLine+1))
nextLine=$(sed -n "$nextIP,/address/p" ./ips.txt)
由于某种原因$ nextLine也给了我两个ips我不知道为什么因为在开始时工作得很好。
并且最终这条线不能正常工作。
"s/$curLine/$nextLine/" </etc/network/interfaces>/etc/network/interfaces.new
错误消息“sed unterminated`s”命令“。如果我用“地址xxx.xxx.xxx.xx”之类的文本替换$ nextline,那就可以了。
我已经阅读了很多主题,其中解决方案是使用双引号,但我不知道为什么它不适用于我。我也有一本书,其中一个例子基本上和我正在做的一样,但是当我尝试使用它时它再次起作用。
谢谢!
答案 0 :(得分:0)
算术的语法没有额外的含义:
NUM=1
OTHERNUM=$((NUM + 1))
# ^^^^^^^^^^^^
换句话说,请说nextIP=$((newLine+1))
。
答案 1 :(得分:0)
问题解决了。我刚刚改变了
nextLine=$(sed -n "$nextIP,/address/p" ./ips.txt)
搜索行的范围而不是带有模式的特定行。
nextLine=$(sed -n "$nextIP,/$nextIP" ./ips.txt)