使用 TCL 8.5 版命令执行 UNIX shell 命令
Execute UNIX shell command with TCL version 8.5 commands
我正在尝试计算文件夹中不同 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 不允许这样做?如何从 .tcl 脚本中执行 sha1sum shell 命令?
您可以显式循环遍历每个元素,也可以将它们放在一起。这是一个循环选项:
# ... 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
.
的单独参数
我正在尝试计算文件夹中不同 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 不允许这样做?如何从 .tcl 脚本中执行 sha1sum shell 命令?
您可以显式循环遍历每个元素,也可以将它们放在一起。这是一个循环选项:
# ... 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
.