Ошибка команды TCL exec - PullRequest
       20

Ошибка команды TCL exec

0 голосов
/ 30 ноября 2018
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 правильный, доступ правильный.Спасибо, чтобы помочь.

С уважением

1 Ответ

0 голосов
/ 30 ноября 2018

Вы правильно понимаете: Tcl [exec] не предусматривает bash-подобное подстановочное расширение.Tcl может сделать это проще для вас, без вывода [exec], используя команды [glob] и [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"]
...