Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将TCL exec命令的结果获取到数组中_Tcl_Exec - Fatal编程技术网

将TCL 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中的数组

如何将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数组不能保证记录的顺序。例如,我有这个

% 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是变量名的关联结构,类似于其他语言中的哈希或字典,只是它不是一个值。