我想写一个tcl程序来为一个ip地址添加一个数字,如192.168.255.254 +2给出192.169.0.0
#!/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 :(得分: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
;关键是你可以在脚本部分进行各种处理。)
文档: foreach, incr, ip (package), lmap (for Tcl 8.5), lmap, lreverse, package, puts, set