使用 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
我有一个 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