Передача параметров времени выполнения в сценарии TCL из неинтерактивной оболочки

Я могу запускать сценарии TCL на сервере Linux из неинтерактивной оболочки, созданной библиотекой JSch, используемой в программе java из среды Windows. Проблема в том, что у меня есть несколько сценариев, которым необходимо передавать определенные параметры во время выполнения сценария на основе промежуточного вывода сценария, и после ввода параметров выполнение сценария продолжается оттуда и далее. Но поскольку это не интерактивная оболочка, я не могу передать эти параметры во время выполнения. Есть ли способ заставить его работать? Я подумал о варианте, в котором я передам параметры как аргумент командной строки, но хотел узнать другой способ.


person Peeyushpd    schedule 15.04.2013    source источник


Ответы (1)


Когда вы говорите «параметры», имеете ли вы в виду что-нибудь, что пользователь ввел бы в интерактивном сеансе в качестве входных данных для подсказок, представленных сценарием?

Если да, есть две возможности:

  • Если сценарий не ожидает, что сеанс будет интерактивным, и просто считывает его ввод из своего стандартного потока ввода (например, используя gets), то просто подайте этот ввод на стандартный ввод процесса tclsh, который интерпретирует ваш сценарий.
  • Если сценарий действительно ожидает, что сеанс будет интерактивным (и отказывается просто принимать данные из своего входного потока), вам придется выделить псевдо-TTY для целевого процесса.

    Я не знаком с JSch, но this, похоже, является вопросом (и ответом) о том, как JSch выделить PTY.

person kostix    schedule 15.04.2013
comment
Да, параметры означают, что пользователь будет вводить в интерактивной оболочке. Поскольку сценарий ожидает, что сеанс будет интерактивным, я попытаюсь изучить возможность псевдо-TTY с использованием JSch. Спасибо. :) Скоро выложу результаты. - person Peeyushpd; 15.04.2013