tcl - 如何使用foreach循环一一读取两个文件的内容?

标签 tcl expect

我的 TCL 脚本:

set a [open fruits.txt r]
set b [read $a]
foreach c $b {
    puts  "Fruits : $c"

    set website [open website_name1.txt r]
    set each_one [read $website]
    foreach each $each_one {
        puts  "website name : $c"
    }
}

fruits.txt 内容:

apple orange mango litchi banana

website_name1.txt内容:

google.com yahoo.com metlife.com cisco.com span.com

现在,如果我运行上面的脚本,我将得到如下所示的输出:

D:\Desktop>tclsh statck_qns.tcl
Fruits : apple
website name : apple
website name : apple
website name : apple
website name : apple
website name : apple
Fruits : orange
website name : orange
website name : orange
website name : orange
website name : orange
website name : orange
Fruits : mango
website name : mango
website name : mango
website name : mango
website name : mango
website name : mango
Fruits : litchi
website name : litchi
website name : litchi
website name : litchi
website name : litchi
website name : litchi
Fruits : banana
website name : banana
website name : banana
website name : banana
website name : banana
website name : banana

D:\Desktop>

但我试图获得如下所示的输出:

Fruits : apple
website name : google.com 
Fruits : orange
website name : yahoo.com
Fruits : mango 
website name : metlife.com 
Fruits : litchi
website name : cisco.com 
Fruits : banana
website name : span.com

最佳答案

您的代码存在许多问题。您在第二个循环中使用了 $c,而它应该是 $each。另外,如果您只想将网站名称放入一次,则需要获得一个同时循环遍历两个列表的循环。

set a [open fruits.txt r]
set b [read $a]

set website [open website_name1.txt r]
set each_one [read $website]

foreach c $b each $each_one {
  puts  "Fruits : $c"
  puts  "website name : $each"
}

close $a
close $website

codepad demo

您可以使用上述格式的 foreach 循环遍历两个列表(或更多),即:

foreach var1 list1 var2 list2 ... varn listn {
  # code here
}

如果列表中的元素数量不相同,那么您将开始在元素数量较短的列表的变量名称中获取空字符串。

关于tcl - 如何使用foreach循环一一读取两个文件的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25808088/

相关文章:

regex - 使用 regsub 从字符串末尾进行非贪婪匹配

escaping - 用于将其放入 TCL 中的正则表达式的转义字符串

sshfs 未在期望脚本中使用密码

linux - 检查和修改期望脚本中变量的格式

error-handling - 如何使用catch将屏幕上的错误捕获到TCL中的变量中

python - 在 Ubuntu 上的 python3.6 中安装 tkinter

linux - 如何在 Tcl/Tk 中自动换行标签中的文本?

dictionary - 当有值时,我可以在 tcl dict 中查找一个键吗?反向查找

linux - 远程 ls 输出未重定向到文件

linux - 在 shell 脚本中使用的持久非交互式 FTP session