我正在製作一個腳本,並想將其寫入另一個文件(如果該文件存在)?
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.log
、trace1.log
、trace2.log
等traceroute
。
警告:此腳本不會嘗試處理競爭條件。特別是,在腳本檢查文件是否存在之後但在此腳本打開該文件進行寫入之前的某個時刻。在那一刻,另一個正在運行的程式可能會嘗試建立該檔案。萬一您擔心這個問題(不太可能發生),則需要更複雜的方法。