我寫了一個腳本test.sh
將輸入重定向到文件描述符?
#!/bin/bash
#test.sh
echo "This is important message" > /dev/tty
,當我試圖在bash
./test.sh
執行這是重要的信息
我通常不喜歡的終端上
消息./test.sh > /dev/null
好,產量從來沒有到標準輸出
這是重要的信息
這是相當煩人。我真的不喜歡一些故意傾倒在終端上的信息。因此,這就是我所做的。
exec 3<> /dev/tty
./test.sh > /dev/null 3>&1 #Send whatever comes to /dev/tty(3) to /dev/null
但這並不按預期方式工作。
這是重要的信息
那麼,是什麼問題呢?我該如何消失輸出?我真的不希望腳本把我的終端作爲人質。
爲什麼從腳本內部向** tty **回覆消息?爲什麼不把這條線設爲'echo「這是一條重要的信息,''然後控制shell的輸出。 – Kadir
在腳本中,我已經使用'eval「./test.sh&>。/ test_command.log'將輸出從控制檯窗口重新路由到文本文件'test_command.log'。您是否嘗試過插入'&'在你的'>'之前?順便說一句,對I/O重新路由的所有不同可能性有一個很好的解釋[TLDP指南](http://www.tldp.org/LDP/abs/html/ io-redirection.html) –
@ VladislavMartin這不會將輸出重定向到控制檯窗口;「eval」是不必要的,它只是重新路由標準輸出和標準錯誤(兩者都可能先前*已附加到控制檯)到一個文件 – chepner