如何在Expect脚本中实现遍历目录下CSV文件的for循环?
在Expect中实现遍历目录下.csv文件的循环
嘿,这事儿不难搞定!因为Expect是基于Tcl语言开发的,所以我们可以借助Tcl的语法来实现和你那段Bash脚本一模一样的功能。
首先给你最基础的实现版本,核心用Tcl的glob命令来匹配文件,再用foreach循环遍历:
#!/usr/bin/expect # 匹配指定路径下所有.csv文件,结果存到变量里 set csv_files [glob "/path/*.csv"] # 遍历每个匹配到的文件 foreach file $csv_files { puts $file ;# 相当于Bash里的echo,打印文件名 }
如果要考虑目录下没有任何.csv文件的情况(避免默认glob命令找不到文件时直接报错),可以加上-nocomplain选项做个判断:
#!/usr/bin/expect # 用-nocomplain让glob找不到文件时返回空列表而不是报错 set csv_files [glob -nocomplain "/path/*.csv"] # 判断是否匹配到文件 if {[llength $csv_files] == 0} { puts "提示:没有找到任何.csv文件" exit 1 } # 正常遍历文件 foreach file $csv_files { puts $file }
简单解释下关键部分:
glob "/path/*.csv":和Bash里的/path/*.csv作用完全一致,会返回所有符合条件的文件路径组成的列表。foreach file $csv_files:Tcl里的循环结构,逐个取出列表里的文件路径赋值给file变量,执行循环体代码。llength $csv_files:用来获取列表的长度,判断是否有匹配到的文件。
内容的提问来源于stack exchange,提问作者Habineza
相关产品推荐
相关产品推荐

