如何讓 bash 寫入trace.log、trace1.log 等?

如何讓 bash 寫入trace.log、trace1.log 等?

我正在製作一個腳本,並想將其寫入另一個文件(如果該文件存在)?

traceroute google.com > trace.log

任何幫助,將不勝感激。
另外,我是新手,所以一個例子會很有幫助。
謝謝。

答案1

這是一種方法:

#!/bin/sh
n=
while true
do
    fname="trace$n.log"
    [ -f "$fname" ] || break
    n=$(($n+1))
done
traceroute google.com >"$fname"

上面的程式碼依序循環遍歷每個可能的名稱,trace.logtrace1.logtrace2.logtraceroute

警告:此腳本不會嘗試處理競爭條件。特別是,在腳本檢查文件是否存在之後但在此腳本打開該文件進行寫入之前的某個時刻。在那一刻,另一個正在運行的程式可能會嘗試建立該檔案。萬一您擔心這個問題(不太可能發生),則需要更複雜的方法。

相關內容