我将一组文件存储到一个变量中并传递该变量,以便在变量A中获得重复且唯一的值。
set A "232 234 234 234"
set a 1
set files_name "/usr/test/a_232.txt /usr/test/a1_234.txt /usr/test/a2_234.txt /usr/test/a3_234.txt"
foreach j [split $A " "] {
incr count($j)
}
foreach key [array names count] {
if {$count($key) == 1} {
set file_name1 [glob -type f $file_name {$key} ]
} else {
set file_name2 [glob -type f $file_name {$key} ]
}
}
每当我执行上面的代码时,我都会得到以下错误
no files matched glob patterns "/usr/test/a_232.txt /usr/test/a1_234.txt /usr/test/a2_234.txt /usr/test/a3_234.txt"
while executing
"glob -type f $file_list {$key} "
结果应该是这样的
file_name1 : /usr/test/a_232.txt
file_name2 :/usr/test/a1_234.txt /usr/test/a2_234.txt /usr/test/a3_234.txt
答案 0 :(得分:0)
我认为你想要做的是这样的事情:
set A "232 234 234 234"
set files_name "/usr/test/a_232.txt /usr/test/a1_234.txt /usr/test/a2_234.txt /usr/test/a3_234.txt"
unset -nocomplain count
foreach j [split $A] {
incr count($j)
}
foreach key [array names count] {
if {$count($key) == 1} {
set file_name1 [lsearch -regexp -inline $files_name $key]
} else {
set file_name2 [lsearch -regexp -inline -all $files_name $key]
}
}
注意:file_name2
的名称与文件名列表中的密钥匹配的名称一样多,这可能比A
中出现的密钥更多或更少。
glob
命令在文件系统中搜索文件名,而不是在文件列表中搜索。