2012-07-12 229 views
0

我有一個shell腳本,需要在運行時輸入。是否有可能在exec()期間將輸入回顯到shell腳本中?在PHP中運行交互Shell腳本

IE在一個正常的外殼: $ ./script.sh

輸入:你最喜歡的顏色:輸入您的答案]紅

輸出:你最喜歡的顏色是紅色。

+0

你真的想用shell腳本來做到這一點嗎? – 2012-07-12 20:50:38

+0

Shell腳本已經開發出來並用於測試外部硬件,並需要按鍵才能移動到下一個測試。我想我可以通過這種方式找到解決辦法,但是,如果可能的話,我只是好奇而已。我可能會最終將每個測試分解成它自己的腳本並輸出結果。 – Fostah 2012-07-12 20:54:12

+0

所以沒事做機智我最喜歡的顏色然後 - 嘆息 – 2012-07-12 20:55:45

回答

1

我不確定你要問哪一方,但我仍然會回答。

從PHP,你可以從shell讀取用戶輸入。可以使用readline()函數或簡單地使用流來完成。根據您使用的PHP版本和環境,它可以是php:// input或php:// stdin。你可以簡單地fopen()並像往常一樣閱讀。

如果要與正在調用的shell腳本交互,則需要使用proc_open()而不是exec。這有點麻煩,但沒有辦法。該功能將爲您提供單獨的輸入,輸出和錯誤流,您可以根據需要閱讀它們以完成您的任務。

+0

proc_open聽起來像我在找什麼。我基本上希望能夠運行一個shell腳本,查看輸出,輸入動態輸入,重複。 – Fostah 2012-07-12 21:05:19

+0

是的,這是你需要的。如果可能的話,最好在shell函數中使用參數,因爲它更穩定,但有些情況下它不是一個選項。 – 2012-07-13 12:14:05