Bash錯誤:
錯誤:watch &
在腳本中不起作用
當有人向我發送郵件時,我有以下腳本來提醒我:
cd /var/mail watch -g ls && cat end ./alert
end
將是一個空白文件;當我回家時,我會end
從另一個 shell 修改文件,腳本將由於-g
切換而結束。然後我意識到,與其打開另一個 shell,我可以簡單地告訴腳本我回家的時間,那時它會
end
自行修改文件。當我這樣做並發watch
送到後台時,腳本會按預期終止。但是,腳本退出後,shell 會啟動各種奇怪的行為。最簡單的錯誤範例:( watch -g cat end ) & sleep 2 echo y >> end
我想我會使用不同的應用程序來避免這個錯誤。但是,我的系統(Debian)
bash
上konsole
似乎都有這個問題。我應該補充一點,直接從命令行執行上述程式碼似乎確實可以按預期工作。只有在腳本中執行時才會產生這種奇怪的行為。
同時寫入螢幕的兩個程序可能會搞砸。嘗試追加
reset
之後
echo y
,它應該將終端重置為正常。也許在它之前也添加一個短暫的睡眠,所以在重置執行後手錶無法執行。*更新:*如果您對 的輸出不感興趣
watch
,只需將其 stdout 和 stderr 都重定向到無處:( watch -g cat end >& /dev/null ) &
然後它不會弄亂螢幕,你也不需要任何重置。