Como fazer uma gravação bash para trace.log, trace1.log, etc.?

2

Estou fazendo um script e gostaria de gravá-lo em outro arquivo, se este existir?

traceroute google.com > trace.log

Qualquer ajuda seria apreciada.
Além disso, eu sou um novato, então um exemplo seria útil.
Obrigado.

    
por QuyNguyen2013 27.07.2014 / 23:22

1 resposta

1

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.

    
por 28.07.2014 / 00:32

Tags