我試圖從shell腳本中多次讀取stdin,但沒有運氣。其目的是首先讀取文件列表(這些文件是從stdin管道讀取的),然後再讀取兩次以交互地獲取兩個字符串。 (我試圖做的是讀取附加在電子郵件中的文件列表,然後是主題,最後是電子郵件正文)。在bash中多次讀取stdin
到目前爲止,我有這樣的:
photos=($(< /dev/stdin))
echo "Enter message subject"
subject=$(< /dev/stdin)
echo "Enter message body"
body=$(< /dev/stdin)
(加上錯誤檢查,我忽略了succintness代碼)
然而,這是因爲第二和第三重定向得到EOF得到一個空的主題和正文想必。
我一直試圖關閉並重新打開stdin < & - 和東西,但它似乎並沒有這樣工作。
我甚至嘗試使用分隔符作爲文件列表,使用「while; read line」循環並在檢測到分隔符時跳出循環。但是這也沒有奏效(??)。
任何想法如何構建這樣的東西?
不適用於我的原因是我正在嘗試使用管道傳遞照片列表。如果我簡單地閱讀列表之前的那些字段,則列表中的兩張第一張照片最終成爲主題和電子郵件正文,這不是我想要的。 (當然,我可以決定主題和主體必須通過輸入管道的前兩行,但對我來說這太難看了。) – alvherre 2010-01-02 21:46:09