我有什麼似乎是一個簡單的用例:我啓動一個腳本(python或bash),它從命令提示符運行一個模擬器,然後模擬器獲取命令,直到我鍵入ctrl -c或退出。我想在shell中做同樣的事情,下面的代碼不起作用。我正在嘗試做的是測試自動化,所以我想直接從命令行程序嚮應用程序發出命令。在Python中,我有以下幾點:發出連接到shell腳本的終端命令
import os
import subprocess
command = ['/usr/local/bin/YCTV-SIM.sh', '-Latest'] #emulator for yahoo widgets
process = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE)
time.sleep(12) #wait for launch to finish
print '/widgets 1' #first command to issue
print '/key enter' #second command to issue
process.wait()
正如你所看到的,這是一些非常簡單的東西。當從命令shell啓動'YCTV-SIM.sh'時,我進入輸入模式,並且我的密鑰條目被髮送到應用程序外殼(YCTV-SIM.sh讀取原始輸入),所以理想情況下,我將能夠管道文本直接到這個應用程序shell。到目前爲止,沒有任何反應。測試輸出到控制檯窗口,但應用程序不響應我嘗試發出的命令。我正在使用python 2.6.3,如果這很重要,但Python不是必需的。
語言在這一點上是非常重要的,所以PERL,Python,Bash,TCL ......無論你可以提供什麼幫助。
你不應該用'shell = True'運行它。然後,你的'print'不會進入stdin進程,而是你的父進程標準輸出。 – Keith 2013-02-12 01:50:46