Aqui está uma abordagem:
#!/bin/sh
n=
while true
do
fname="trace$n.log"
[ -f "$fname" ] || break
n=$(($n+1))
done
traceroute google.com >"$fname"
Os loops acima passam por cada nome em potencial, trace.log
, trace1.log
, trace2.log
, etc. Na primeira vez que ele encontra um nome que não existe, ele quebra o loop e executa o seu traceroute
command.
Advertência: este script não tenta lidar com condições de corrida. Em particular, há um instante no tempo após o script verificar a existência de um arquivo, mas antes que esse script abra esse arquivo para gravação. Nesse instante, outro programa em execução pode tentar criar o arquivo. No caso improvável de que isso seja uma preocupação para você, uma abordagem mais complexa seria necessária.