Имам проблем, който ме тормози през последните 2 дни.
Изпълнявам tcl скрипт (за eggdrop), който, когато се задейства, изпълнява локална команда на обвивката (детски процес) и ако командата е успешна, изплюва резултатите. Ако обаче командата НЕ е успешна, получавам грешка „Tcl error [proc_ports]: child process exited abnormally
:.
Това, което бих искал, е да създам персонализиран отговор, ако дъщерният процес не намери никакви резултати.
Сценарият е:
set chan "#help"
bind pub -|- .port proc_ports
proc proc_ports {nick host handle channel testes} {
global chan
if {"$chan" == "$channel"} {
return 0
}
if [matchattr $nick |fmn $channel] {
set ports [lindex $testes 0]
set fp [ exec grep -w "$ports" scripts/ports | awk {{$1=""; print $0}} ]
putserv "PRIVMSG $channel :Port \002$ports\002 is normally used for: \002$fp\002"
return 1
} else {
putserv "PRIVMSG $channel :$nick, you do \002NOT\002 have access to this command!"
return 1
}
}
Бих искал да реша това с помощта на TCL, за да ми помогне да науча повече, вместо да променям exec в скрипт на обвивка, който би върнал всякакви грешки.
Прочетох информация за командата CATCH в TCL и опитах много различни подходи към скрипта, но всичките ме провалиха :(
Всяка помощ ще бъде оценена.
наздраве