Теоретически вы можете просто поместить переменную в стандартный ввод скрипта. Он будет ждать, пока сценарий не будет готов его использовать. Вы делаете это, используя <<
с exec
, что позволяет вам вводить значение Tcl прямо без каких-либо временных файлов:
# We can call “su” directly; no need for a bash wrapper
set start [ exec su user -c "cd /home/user/; bash teststart.sh $aa $bb" << $cc ]
(Идея подключения чего угодно до IR C, который запускает скрипт через su
, вызывает у меня коллизию. Я очень надеюсь, что ваш код безопасности в порядке!)
Если вам требуется , чтобы отложить отправку строки на фиксированный период времени, вероятно, проще всего сделать это с помощью небольшого конвейера подпроцесса:
set start [ exec bash -c "sleep 60; echo $cc" | su user -c "cd /home/user/; bash teststart.sh $aa $bb" ]
Для более сложных взаимодействия, вы попадаете в область, в которой расширение Expect того стоит. У меня нет опыта интеграции его с Eggdrop (и с Expect тоже не особо много; у меня по большей части другие проблемы).