我確定你的問題中的兩個問題:
如何在Cygwin的/ bash中執行批處理文件?
如何獲得期望安裝/運行在cygwin/bash?
1.如何在cygwin/bash中執行批處理文件?
在示例代碼中,我發現
---8<---
sh C:\Users\Osama.Barakat\Desktop\batchfile.bat
--->8---
恕我直言,這是一個錯誤。我相信bash
將嘗試執行任何腳本,無論腳本文件擴展名如何。但是,如果batchfile.bat
確實是批處理文件,則應該使用正確的解釋器(即cmd.exe
)調用它。
我試過看看cygwin bash
有沒有問題,但是它工作正常。我的樣品批處理文件test-expect.bat
:
@echo off
rem output
echo Hello %USERNAME%
rem input
set /p INPUT= Enter input:
rem output
echo Input: %INPUT%
...在Cygwin上在bash
測試:
$ cmd /c test-expect.bat
Hello Scheff
Enter input: Hello cmd
Input: Hello cmd
$
OK,完成。
2.如何獲得在cygwin/bash中安裝/運行的期望?
在cygwin上安裝expect
我用google搜索了一下,發現Installation of Cygwin, expect and Ssh。於是,我開始將cygwin-設置setup-x86.exe
和嘗試別的東西:
在「選擇包」頁面,我設置View
到Full
和Search
到expect
。我只列出了四個條目,第一條是:「expect:自動交互式應用程序的工具」(類別:Tcl)。我選擇了這個安裝,並且必須確認另一個包是否依賴。
安裝完畢後,我在一個交互式的bash嘗試這樣做:
$ which expect
/usr/bin/expect
$
OK - 看起來相當不錯。
結合CMD。EXE和期待
把所有在一起,我寫了另一個測試腳本test-expect.exp
:
#!/usr/bin/expect
spawn cmd /c test-expect.bat
expect "Enter input: "
send "Hello expect\r"
interact
測試在bash在Cygwin上:
$ ./test-expect.exp
spawn cmd /c test-expect.bat
Hello Scheff
Enter input: Hello expect
Input: Hello expect
$
那麼,它似乎工作。
我建議編輯您的問題的標題:恕我直言「如何結合批處理文件和期望腳本在cygwin?」或類似的東西會更精確。 – Scheff