将TCL exec命令的结果获取到数组中
如何将tcl exec命令的结果放入字符串数组中,其中每个项都是我的exec输出的一行 例如:将TCL exec命令的结果获取到数组中,tcl,exec,Tcl,Exec,如何将tcl exec命令的结果放入字符串数组中,其中每个项都是我的exec输出的一行 例如: exec ls -la 如何将结果捕获到数组中并在foreach中打印?我可以建议您使用列表而不是数组吗?如果是的话 set output [exec ls] set output_list [split $output \n] foreach line $output_list { puts $line } 在这种情况下,列表是更有用的集合,因为您只需要逐个存储行。另一方面,Tcl中的数组
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数组不能保证记录的顺序。例如,我有这个
% 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)
}
对于{set i 0}{$i<[array size arr]}{incr i}{
卖出$arr($i)
}
谢谢Ruslan!如何使用阵列实现该解决方案?请检查我的答案。我添加了带有数组的解决方案,但它很难看。请注意,在Tcl中,列表是一个随机访问序列,基本上与其他语言中的数组相同,只是更具动态性。Tcl数组OTOH是变量名的关联结构,类似于其他语言中的哈希或字典,只是它不是一个值。