
Я хочу запустить файл .sh, который принимает аргумент на машине Linux. Я использую plink.exe для запуска этого файла .sh на машине Windows. Но я не знаю, что написать в пакетном файле, чтобы запустить plink.exe, который в свою очередь запускает файл .sh и этот аргумент файла.
Я написал следующую пакетную команду:
@echo off
start C:\Users\Prateek\Desktop\PLINK.EXE -ssh -P 22 user@host -pw password sh -x "/home/user/copy.sh"
При выполнении я получаю:
+ echo ''
+ echo 'Enter partner id'
Enter partner id
+ read pid
:
На самом деле «Введите идентификатор партнера» — это аргумент, который мне нужно передать.
решение1
Я все еще не совсем понимаю, чего вы хотите, но я сделаю несколько предположений, а потом посмотрим, что из этого получится ;-) К сожалению, у меня нет под рукой оболочки Windows, поэтому мой Batch foo может быть немного не таким, особенно в отношении кавычек, тем более, если в тексте есть пробелы. Правки приветствуются.
Я понимаю, что вы хотите предоставить аргумент командной строки для вашего пакетного файла. Затем он будет доступен внутри пакетного файла как
%1
.Я предполагаю, что полученная в предыдущем абзаце строка должна быть предоставлена в качестве входных данных скрипту оболочки UNIX. Это можно (например) сделать в оболочке входа в систему на Linux-компьютере, передав команду echo во вторую оболочку.
Попробуйте следующую модификацию:
start C:\Users\Prateek\Desktop\PLINK.EXE -ssh -P 22 user@host -pw password echo %1 ^| sh -x "/home/user/copy.sh"
Если он вызван как mybatch.bat SomeText
, он должен запустить следующее в оболочке на удаленном хосте:
echo SomeText | sh -x /home/user/copy.sh
который запускается copy.sh
и заставляет его думать, что кто-то набрал SomeText
на клавиатуре что-то за него.