我想在 Linux 机器上运行一个带有参数的 .sh 文件。我使用 plink.exe 从 Windows 机器执行此 .sh 文件。但我不知道在批处理文件中要写什么才能运行 plink.exe,然后 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
:
实际上,“输入合作伙伴 ID”是我需要传递的参数。
答案1
我仍然不太明白你想要什么,但我会做一些假设,然后我们就可以看看它是如何进行的 ;-) 不幸的是,我也没有现成的 Windows shell,所以我的 Batch foo 可能有点不对劲,特别是在引用方面,如果内容包含空格,情况会更糟。欢迎编辑。
我理解您想为批处理文件提供命令行参数。然后,该参数将在批处理文件中以 的形式提供
%1
。我假设上一段中获得的字符串应该作为输入提供给 UNIX shell 脚本。这可以(例如)在 Linux 机器上的登录 shell 中通过将 echo 命令传送到第二个 shell 来完成。
尝试如下修改:
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
,它应该在远程主机的 shell 中运行以下命令:
echo SomeText | sh -x /home/user/copy.sh
它运行copy.sh
后会让它认为有人SomeText
在键盘上输入了内容。