У меня есть простой скрипт bash:
echo "Hello!"
read varname
echo "you entered " $varname
Таким образом, он выводит «Привет!» а затем принимает пользовательский ввод и выводит введенный текст.
Скрипт можно успешно выполнить с помощью PuTTY.
Также я могу запустить скрипт с помощью Plink через Windows cmd
. Подключаюсь к хосту:
plink.exe -batch -i C:\path\to\key.ppk пользователь@хост
Затем я меняю каталог и запускаю скрипт:
cd mydir
bash myscript.sh
Скрипт работает как надо: печатает "Hello!" а затем запросить ввод и распечатать ввод.
Однако, если я запускаю скрипт с той же строкой с подключением Plink:
plink.exe -batch -i C:\path\to\key.ppk user@host bash ./mydir/myscript.sh
Я получаю следующую ошибку: я вижу "Hello!" вывод и курсор мигает на следующей строке. Но я не могу ввести там ни одного символа. Консоль просто не реагирует ни на какие клавиши и даже на Enter. Единственный способ продолжить — нажать Ctrl+C, чтобы закрыть соединение.
Итак, как решить эту проблему и заставить скрипт принимать ввод с помощью cmd + Plink, если скрипт выполняется с использованием одной строки?