TCL 执行命令错误
TCL exec command errror
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 是正确的。谢谢帮助。
此致
您的感觉是正确的:Tcl 的 [exec]
不提供类似 bash 的通配符扩展。 Tcl 可以更轻松地为您完成此操作,而无需 [exec]
,通过使用它的 [glob]
和 [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"]
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 是正确的。谢谢帮助。
此致
您的感觉是正确的:Tcl 的 [exec]
不提供类似 bash 的通配符扩展。 Tcl 可以更轻松地为您完成此操作,而无需 [exec]
,通过使用它的 [glob]
和 [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"]