1
bind pub "-|-" !tests pub:tests
proc pub:tests { nick host handle channel arg } {

set size [ exec ls -l /home/archiv/pics/*.r* | wc -l ]
putnow "PRIVMSG $channel :size $size"

}

我有这个错误

[09:36:19] Tcl error: 0
ls: cannot access '/home/archiv/pics/*.r*': No such file or directory

当我在 bash 中测试时

ls -l /home/archiv/pics/*.r* |wc -l
result:
71

如何使用.r(通配符)?怎么了?dir 是正确的,访问是正确的。谢谢帮助。

问候

4

1 回答 1

1

您感觉正确:Tcl[exec]不提供类似 bash 的通配符扩展。[exec]Tcl 可以通过使用它的[glob]and[llength]命令更轻松地为您完成此操作,而无需“退出”:

 set size [llength [glob "/home/archiv/pics/*.r*"]]

如果您仍然喜欢其他一些 shell 而不是 Tcl(例如 bash),那么您必须[exec]显式地进入 shell,例如:

 set size [exec bash -c "ls -l /home/archiv/pics/*.r* | wc -l"]
于 2018-11-30T11:05:21.020 回答