我正在尝试将Mac上的文件夹与数百个jpgs排序到单独的文件夹中
在pixelWidth
与/usr/bin/sips
之后。当我运行脚本时,它显示了一个
Error 4: no file was specified
。变量$f
在第一行是空的?
我认为for f in *jpg
中的“f”在文件循环时引用了文件。
imgWid=$( /usr/bin/sips -g pixelWidth $f | sed -n 2p | cut -d":" -f2- )
for f in *jpg; do if [ "$1" == "$imgWid" ]; then; mv $f $dir1 2>/dev/null; fi; done
如果我能解决这个问题,我将不胜感激。
答案 0 :(得分:2)
$()
在指定的位置运行命令。 (所以第1行),$f
仅在循环中定义(第3行)。
也许:
function determineImageWidth()
{
/usr/bin/sips -g pixelWidth $1 | sed -n 2p | cut -dj":" -f2-
}
for f in *.jpg
do
width=$(determineImageWidth $f)
if [ -n $width ]
then
mkdir -p $width
mv $f $width/
else
echo "Can't determine the width for $f"
fi
done
答案 1 :(得分:0)
您没有在脚本的第一行指定$ f。据我所知,它只是在for循环中指定的。 您可能希望在第一行中将$ f更改为$ 1,以使用给予脚本的参数。