bash で trace.log、trace1.log などに書き込むにはどうすればよいでしょうか?

bash で trace.log、trace1.log などに書き込むにはどうすればよいでしょうか?

スクリプトを作成していますが、別のファイルが存在する場合はそのファイルに書き込みたいのですが。

traceroute google.com > trace.log

どなたか助けていただければ幸いです。
また、私は初心者なので、例があると助かります。
ありがとうございます。

答え1

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.logtrace2.logときに、ループを終了してtracerouteコマンドを実行します。

注意: このスクリプトは競合状態を処理しようとしません。特に、スクリプトがファイルの存在を確認した後、このスクリプトがそのファイルを書き込み用に開く前に、瞬間的な瞬間があります。その瞬間に、実行中の別のプログラムがファイルを作成しようとする可能性があります。万が一これが懸念事項になる場合は、より複雑なアプローチが必要になります。

関連情報