我对 bash 脚本知之甚少。我需要遍历文件夹及其子文件夹,识别 png 文件,将它们传递给外部 linux 应用程序,并在文本文件中捕获该应用程序的输出,该文本文件的名字与传递给外部的文件相同程序。此外,必须在与 png 文件相同的文件夹中创建 txt 文件。
在搜索 SO 和谷歌搜索后,我想出了以下脚本
#!/bin/sh
cd folder1/folder2
find . -maxdepth 4 -iname '*.png' -type f |while read line; do
fullfilename="${line##*/}";
base="${fullfilename%.*}";
ext="${fullfilename##*.}";
mypath="${line%/*}";
#echo $fullfilename;
#echo $base;
#echo $ext;
#echo $mypath;
#echo $mypath/$base.txt;
#echo $line;
myexternalprogram -x $line > $mypath/$base.txt;
# -x is a switch reqd by the external program
done
folder2 的几个子文件夹的名称中有空格,例如 Sub Folder 12
运行上面给出一个错误
...line 16: $mypath/$base.txt. ambigous redirect
只是为了检查我删除了第 16 行的重定向部分。我得到了错误
./subfolder1/subfolder2/Sub is an unknown extension
显然是由 myexternal 程序抛出的,因为它卡在子文件夹名称中的空白处。
谁能帮帮我?我究竟做错了什么?