
我想在 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
在鍵盤上輸入了它。