bash 脚本运行,但仅输出 1 个文件

bash 脚本运行,但仅输出 1 个文件

尝试让该脚本在目录中运行并对每个带有 .tmp.tcx 扩展名的文件执行操作,因此如果我有 3 个带有 ${b}.tmp.tcx 的唯一文件,我希望有 3 个唯一文件 ${b}.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

第一个文件循环的第一次输入是对找到的文件进行 xml 输出,然后复制全部tmp.tcx 文件移出文件夹。因此,在下一次循环中,xml 将尝试处理不再存在的文件。

尝试将第 6 行更改为

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

这只会移动您刚刚处理的文件。

相关内容