TCL exec命令错误

时间:2018-11-30 08:42:47

标签: tcl eggdrop

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是正确的,acces是正确的。谢谢。

致谢

1 个答案:

答案 0 :(得分:1)

您正确地理解:Tcl的[exec]没有提供类似bash的通配符扩展。通过使用Tcl的[exec][glob]命令,Tcl可以更轻松地为您做到这一点,而无需[llength]

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

如果您仍然喜欢Tcl之外的其他外壳程序(例如bash),则必须显式地[exec]进入外壳程序,例如:

 set size [exec bash -c "ls -l /home/archiv/pics/*.r* | wc -l"]