2012-04-18 122 views
0

我想實現一些我的邏輯說不能完成的事情。但我需要你的幫助來理解爲什麼不可能。在日誌文件中獲取stdout + stderr

問題

短的版本是有可能記錄標準輸出+標準錯誤在csh的腳本,而無需使用文件重定向(> &或T恤)。


詳細具體的問題

我有我在哪裏不允許使用文件重定向csh腳本(SCRIPT1)要求的說明。(我會以一個理由而) 因此,這意味着我不能使用類似

echo just checking >& logfile 

所以我不能用這個還是在三通o創建我的日誌文件。 我還有另一個腳本(script2),它是頂級腳本。

我可以在獨立模式下或通過script2運行script1。

無論哪種情況,我都需要在日誌文件中創建script1的日誌(stdout + stderr)。

有針對

寫兩種可能(但不完全)選項,這條線在SCRIPT2

./script1 >& logfile 

但是當SCRIPT1在獨立模式下運行我無法登錄日誌文件SCRIPT1 。

另一種選擇是使用文件重定向在SCRIPT1這樣的:

echo test starting >> logfile 
echo test over 

在這種情況下你兩個缺點: 1)「試驗過」打印之前「測試開始」,即發生的順序的命令日誌不確定。 2)如果我打算覆蓋整個腳本,在每個聲明之後放置>> &是很繁瑣的。

現在有任何其他方式,我可以得到我所需要的。那就是我可以運行script1而無需文件重定向,並且仍然可以在日誌文件中記錄stdout + stderr。

+0

我不明白。你說「我不允許使用文件重定向」,但你會說「另一個選項是在腳本1中使用文件重定向」。另一個選項似乎與您不允許使用的示例完全相同。 – 2012-04-18 17:56:55

+0

我很抱歉不清楚。通過「另一個選項..」我解釋了爲什麼我不能使用正常的文件重定向,因爲它沒有給出所需的輸出。 如果您需要更多輸入,請提示我。 – Ani 2012-04-18 18:27:27

回答

2

你提到csh,所以這可能不會幫助你。另一方面,它可能會激勵你停止使用csh作爲腳本,這是一個出乎意料的不恰當的任務。在SH,你可以簡單地做:

#!/bin/sh 
exec > logfile 2>&1 
echo foo 

要編寫foo(而輸出以及所有後續命令的錯誤)的日誌文件

+0

不幸的是我不能使用csh/tcsh以外的任何東西。 我很感謝你的回答。 那麼,你的意思是說exec語句不適用於csh? – Ani 2012-04-18 18:30:51

相關問題