bash script trabalhando, mas gerando apenas 1 arquivo

0

Tentativa de executar este script através de um diretório e executar a operação em todos os arquivos com a extensão .tmp.tcx, portanto, se eu tivesse 3 arquivos exclusivos com $ {b} .tmp.tcx, esperaria 3 arquivos exclusivos $ {b} .tcx.

Não sei porque este script acaba exibindo apenas um arquivo em .tcx (linha 6). Parece um problema com a linha 5 definindo b?

#! /bin/bash

for a in *tmp.tcx; do
  if [ -f "$a" ]; then # was it a file
    b="${a%.tmp.tcx}" #set b to $a without .tmp.tcx
    xml fo -t $a > "${b}.tcx"
    mv *gmn /home/pato/garmin/tcx-output/
    mv *tmp.tcx /home/pato/garmin/tcx-output/
  fi
done
    
por jojo 21.05.2012 / 06:16

1 resposta

2

Sua primeira entrada no loop do primeiro arquivo faz a saída xml para o arquivo que encontra, em seguida, copia all arquivos tmp.tcx para fora da pasta. Então, o próximo passo é o loop, o xml tentará processar um arquivo que não está mais lá.

Tente alterar a linha 6 para

 mv $a /home/pato/garmin/tcx-output

Que moverá apenas o arquivo que você acabou de processar.

    
por 21.05.2012 / 06:23