Estou fazendo um script e gostaria de gravá-lo em outro arquivo, se existir?
traceroute google.com > trace.log
Qualquer ajuda seria apreciada.
Além disso, sou um novato, então um exemplo seria útil.
Obrigado.
Responder1
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"
O procedimento acima percorre cada nome potencial por vez, trace.log
, trace1.log
, trace2.log
, etc. Na primeira vez que encontra um nome que não existe, ele sai do loop e executa seu traceroute
comando.
Advertência: Este script não tenta lidar com condições de corrida. Em particular, há um instante após o script verificar a existência de um arquivo, mas antes de esse script abrir esse arquivo para gravação. Nesse instante, outro programa em execução poderia tentar criar o arquivo. No caso improvável de isso ser uma preocupação para você, seria necessária uma abordagem mais complexa.