2016-07-07 98 views
1

我想寫一個TCL程序的號碼添加到像192.168.255.254 +2一個IP地址給192.169.0.0添加一個數字IP地址

#!/bin/tclsh 
puts "Please enter a ip address" 
gets stdin ip 
puts "You have Entered Ip Address: $ip" 
set Ip [split $ip .] 
puts $Ip 

現在我面臨的問題,在遍歷列表。如果我可以以相反的順序遍歷他的列表,那麼我可以添加該數字,並將該進位轉發到左側,然後用'。'打印新的IP地址。

我有興趣以相反的順序遍歷列表。

+0

好奇你的嘗試性解決方案的運算部。你可以把它(包括「結轉」)添加到這個問題嗎?那將是一個很好的開始......或者你是否會問如何從「右側」遍歷「列表」?請相應編輯。謝謝。 – Dilettant

+1

我很好奇,爲什麼你會這麼做。並非所有IP地址都是偶數_close_等於... –

+0

請參閱http://stackoverflow.com/questions/25712265/script-to-generate-n-number-of-valid-ip-addresses?rq=1 –

回答

3

這是你如何做到這一點:

package require ip 
set ip [ip::toInteger 192.168.255.254] 
# => 3232301054 
ip::intToString [incr ip 2] 
# => 192.169.0.0 

遍歷以相反的順序列表,OTOH,可以使用

foreach item [lreverse $items] { 
    puts $item 
} 

lmap item [lreverse $items] { 
    set item 
} 

進行(後者的例子相當於lreverse $items;重點是可以在腳本部分進行各種處理。)

文檔: foreachincrip (package)lmap (for Tcl 8.5)lmaplreversepackageputsset