我目前有一堆安裝程序腳本,它們將stderr/stdout記錄到日誌文件中,效果很好,但我還需要爲用戶重定向stdin對同一個日誌文件的響應。安裝腳本有時會在共享庫(一個包含)中調用函數,該函數也可以讀取用戶輸入。我想添加一個自定義閱讀功能,但這將需要更改共享庫,並想知道是否有方法從調用腳本執行此操作。Bash:如何將stdin,stdout和stderr重定向到安裝日誌的日誌文件
目前的腳本與此類似:
#!/usr/bin/bash
. ./libInstall
INSTALL_LOG="./install.log"
((
echo "INFO: Installing..."
# Run some arbitrary commands...
# Read some input...
read ANSWER1
read ANSWER2
# Call function in libInstall which will prompt the user...
funcWhichAsksAQuestion ANSWER3
echo "INFO: Installation Complete"
) 2>&1) | tee -a "${INSTALL_LOG}"
如果我改變「((」反映了線下,我可以標準輸入開球到日誌文件:
貓 - 2 >/dev/null | tee -a $ {INSTALL_LOG} |((
這可以工作,但需要2次回車,一旦腳本結束,大概是因爲管道損壞了 這幾乎就在那裏,但我會努力工作而不必在最後按兩次輸入回到t他的shell提示符。
這些腳本必須相當可移植才能在RHEL> = 5,AIX> = 5.1,Solaris> = 9上工作,我相信最低bash版本是v2.05。
任何想法,我可以如何實現這一點?
感謝
你不能將'stdin'重定向到一個文件。你可以從文件中重定向'stdin'。 – anishsane
同意,這就是爲什麼我試圖在將它傳遞給腳本之前將其啓動到文件中。我可能會最終實現一個自定義的「讀取」功能,但我希望避免這種情況。乾杯 –