首页 > 解决方案 > 使用 TCL 8.5 版命令执行 UNIX shell 命令

问题描述

我正在尝试计算文件夹中不同 TCL 脚本的 SHA1 以进行版本检查(我的 TCL 版本是 8.5)。我想在其中一个 TCL 脚本中执行此操作,并将此信息打印到单独的文件中。我以为我可以做这样的事情:

set repoDir "some/repo/dir"
set scripts_hash [cd $repoDir/scripts; exec sha1sum ./* | sha1sum]
puts $file $scripts_hash

但是, exec 不允许这样做吗?如何从 .t​​cl 脚本中执行 sha1sum shell 命令?

标签: shellunixtclexecsha1sum

解决方案


您可以显式遍历每个元素,也可以将它们放在一起。这是一个循环选项:

# ... open $file
set repoDir "some/repo/dir"
foreach f [glob -directory $repoDir -- "*"] {
  puts $file [exec sha1sum $f]
}
close $file

这是一个一次性的电话sha1sum

# ... open $file
set repoDir "some/repo/dir"
puts $file [exec sha1sum {*}[glob -directory $repoDir -- "*"]]
close $file

{*}前缀强制 TCL (v8.5+) 扩展每个结果列表glob项以成为sha1sum.


推荐阅读