Shell

在寫入日誌文件時不確定我的腳本的行為

  • January 25, 2013

我有一個非常簡單的 ksh 腳本,並且在某些時候我想寫入日誌文件。我在兩個地方使用以下命令…

print "Directory listing 1:\n" > ${LogFile}
ll >> ${LogFile}

(注:第二次使用此命令列印目錄清單2)

我的問題是,當我之後查看日誌文件時,只有第二次執行這些命令才有效!所以沒有“目錄清單 1”和伴隨的“ll”輸出。

我已經測試並測試了腳本以確保我的邏輯沒有錯。我在每個之前添加了列印測試命令,所以我知道它們會被執行。

是不是我做錯了什麼或者我沒有意識到?

每當您使用>(您的第一行)進行重定向時,都會將${LogFile}其截斷為 0,然後再寫入。如果我理解正確,您執行上述操作兩次,第一個內容會被第二個內容覆蓋。

您需要做的是:

> ${LogFile}    # This just truncates if there was anything there, writes nothing
...
echo "First round" >> ${LogFile}
ls -l >> ${LogFile}
...
echo -e "\nSecond round" >> ${LogFile}
ls -l >> ${LogFile}
...

引用自:https://unix.stackexchange.com/questions/62535