我正在寫一個腳本,在一段時間更改IP地址,每一次,但由於某種原因,我不能得到這個工作的Bash腳本,有兩個變量的sed不工作
sed "s/$curLine/$nextLine/" </etc/network/interfaces>/etc/network/interfaces.new
,即使我更改結束/克,我總是會得到「SED未結束的'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'command」。如果我用「地址xxx.xxx.xxx.xx」這樣的文本替換$ nextline,它就可以工作了。
我已經閱讀了很多主題,其中解決方案使用了雙引號,但我不知道爲什麼它不起作用跟我來。我也有一本書,是這基本上是相同的我在做什麼,但是當我再次嘗試使用它,它不工作的例子。
謝謝!
我不確定我是否明白你的意思。現在我改變了 'nextIP = $((換行+ 1))'和 'nextLine = $(sed的-n 「$ nextIP,/地址/ P」 ips.txt)' 但仍以下後,S::某些原因,我有兩個IP '回聲「下一行」 $ nextLine' 又一次‘未結束的'S'命令’ – Mare
你確定你可以通過'$ curLine'到'sed'命令沒有任何逃脫?你是否先在命令行上手動嘗試過? –
是的,它似乎工作,至少當我回顯$ curLine時,它給了我一個來自接口的IP地址,它正確的是「地址xxx.x.xx.xxx。我的ips.txt還包括格式爲」xxx地址.. 。「我試圖用ips.txt地址行替換接口地址線 – Mare