使用 bash 脚本循环文件

loop over files with bash script

我有一个 js script 可以将 kml 位置历史文件转换为 csv。我写了一个 bash 脚本来遍历目录中的所有文件。当我从命令行 ./index.js filename.kml > filename.csv

执行脚本时,该脚本有效

但是当我执行应该遍历所有文件的 bash 文件时没有任何反应。

我知道这可能是一个简单的错误,但我无法发现它。

#!/bin/bash
# file: foo.sh
for f in *.kml; do
  test -e "${f%.kml}" && continue
  ./index.js "$f" > "-fcsv"
done

只需删除“&& continue”,如果我没记错的话,您正在使用 "continue" 关键字跳过当前迭代,这就是什么都没有发生的原因

编辑

此外,您不应该测试文件是否存在,for 循环足以确保 "f" 将是一个有效的 .kml 文件。无论如何,如果你仍然想这样做,你必须这样做:

#!/bin/bash
# file: foo.sh
for f in *.kml; do
  if [ -e "$f" ]; then
  ./index.js "$f" > "$f.csv"
  fi;
done