我在Python 3.5中做了一個GIT鉤子。 python腳本調用Bash腳本,該腳本使用read
命令從用戶讀取輸入。GIT鉤子 - > Python - > Bash:如何讀取用戶輸入?
bash腳本本身也可以工作,當直接調用python腳本時,但是當GIT運行用Python編寫的鉤子時,它不會按預期工作,因爲沒有用戶輸入請求來自用戶。
bash腳本:
#!/usr/bin/env bash
echo -n "Question? [Y/n]: "
read REPLY
GIT鉤(Python腳本):
#!/usr/bin/env python3
from subprocess import Popen, PIPE
proc = Popen('/path/to/myscript.sh', shell=True, stderr=PIPE, stdout=PIPE)
stdout_raw, stderr_raw= proc.communicate()
當我執行的Python腳本,bash的read
似乎並沒有在等待輸入,只有我得到:
b'\nQuestion? [Y/n]: \n'
如何讓bash腳本在從Python調用時讀取輸入?
@DYZ>應該是默認行爲:*「使用默認設置None,不會發生重定向; 「* – spectras
@DYZ添加'stdin = sys.stdin'似乎沒有做任何事情...仍然沒有機會鍵入輸入 – arod
@arod>複製粘貼你的代碼,並且在這裏工作正常,只要'.'在'$ PATH'中(這是一個糟糕的主意,儘管你不應該那樣做) – spectras