Попытка запустить этот скрипт в каталоге и выполнить операцию для каждого файла с расширением .tmp.tcx, поэтому, если у меня было 3 уникальных файла с $ {b} .tmp.tcx, я надеюсь, что 3 уникальных файла $ {Ь} .tcx.

Не уверены, почему этот скрипт заканчивает выводом только одного файла в .tcx (строка 6). Кажется, проблема в строке 5, определяющей 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

1 ответ1

2

Ваша первая запись в цикле для первого файла выполняет вывод в формате xml для найденного файла, а затем копирует все файлы tmp.tcx из папки. Поэтому при следующем обходе xml попытается обработать файл, которого больше нет.

Попробуйте изменить строку 6 на

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

Который будет перемещать только файл, который вы только что обработали.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .