Предотвратить выполнение команды exec при выгрузке модуля ibm load sharing facilty

У меня есть сценарий tcl, который представляет собой файл модуля в IBM Load Sharing Facitily (lsf), используемый для настройки некоторых переменных среды и запуска сценария Python с помощью команды.

Когда модуль обычно выгружается, выполняются противоположные всем командам команды, но также команда выполняется как обычно. Я хотел бы, чтобы execчасть работает только на module loadа не на module unload.

Вот что я пробовал до сих пор

      if { !(is-loaded mymodule)} {
    exec .venv/bin/python mypython.py
}

Я также пробовал это

      if { module-info command load } {
    exec .venv/bin/python mypython.py
}

Для каждого я получаю аналогичную ошибку

      Module ERROR: invalid bareword "module"
in expression " module-info command [load] ";
should be "$module" or "{module}" or "module(...)" or ...

оба исключения жалуются либо на недопустимое голое слово («есть», либо на «модуль») в зависимости от того, какой фрагмент я пробую. Является ли мой snytax недействительным?

1 ответ

Мой синтаксис был неправильным, в конце концов я смог решить проблему следующим образом:

      set is_load_command [module-info command load]

if { $is_load_command == 1 } {
    exec .venv/bin/python mypython.py
}

У меня было две проблемы, правильное понимание сравнений в tcl и использование возвращаемых значений из вызываемой функции. Никто не вел себя так, как я привык.

Другие вопросы по тегам