获取 TCL exec 命令的结果到数组中
Get result of TCL exec command into array
如何将 tcl exec 命令的结果放入字符串数组中,其中每一项都是我的 exec 输出的一行?
示例:
exec ls -la
如何将该结果捕获到数组中并在 foreach 中打印它?
我可以建议您使用列表而不是数组吗?如果是这样...
set output [exec ls]
set output_list [split $output \n]
foreach line $output_list {
puts $line
}
在这种情况下,列表是更有用的集合,因为您只需要一行一行地存储行。另一方面,Tcl 中的数组用于存储命名集合(无顺序)。
我可以用数组来做,但是会很难看。
set output [exec ls]
set output_list [split $output \n]
set i 0
foreach line $output_list {
set arr($i) $line
incr i
}
foreach index [array names arr] {
puts $arr($index)
}
如您所见,foreach for arrays 不能保证记录的顺序。例如我有这个
% foreach index [array names arr] {
puts arr($index)
}
arr(8)
arr(4)
arr(0)
arr(10)
arr(9)
arr(5)
arr(1)
arr(6)
arr(2)
arr(7)
arr(3)
所以如果你想使用数组作为有序集合,你需要使用计数器。
for {set i 0} {$i < [array size arr]} {incr i} {
puts $arr($i)
}
如何将 tcl exec 命令的结果放入字符串数组中,其中每一项都是我的 exec 输出的一行?
示例:
exec ls -la
如何将该结果捕获到数组中并在 foreach 中打印它?
我可以建议您使用列表而不是数组吗?如果是这样...
set output [exec ls]
set output_list [split $output \n]
foreach line $output_list {
puts $line
}
在这种情况下,列表是更有用的集合,因为您只需要一行一行地存储行。另一方面,Tcl 中的数组用于存储命名集合(无顺序)。
我可以用数组来做,但是会很难看。
set output [exec ls]
set output_list [split $output \n]
set i 0
foreach line $output_list {
set arr($i) $line
incr i
}
foreach index [array names arr] {
puts $arr($index)
}
如您所见,foreach for arrays 不能保证记录的顺序。例如我有这个
% foreach index [array names arr] {
puts arr($index)
}
arr(8)
arr(4)
arr(0)
arr(10)
arr(9)
arr(5)
arr(1)
arr(6)
arr(2)
arr(7)
arr(3)
所以如果你想使用数组作为有序集合,你需要使用计数器。
for {set i 0} {$i < [array size arr]} {incr i} {
puts $arr($i)
}