我正在尝试编写脚本,将大型照片裁剪并调整大小为高清壁纸。
#! /bin/bash
for i in `ls *.jpg`
do
width=`identify -format '%w' $i`
height=`identify -format '%h' $i`
if [ `echo "$width/$height > 16/9" | bc -l` ]
then
exec `convert $i -resize 1920 -gravity Center -crop '1920x1080+0+0' +repage temp`
else
exec `convert $i -resize x1080 -gravity Center -crop 1920x1080+0+0 +repage temp`
fi
rm $i
mv temp $i
done
但是看起来脚本在处理带有空格的文件名时出现了问题(例如Tumble Weed.jpg)。我该如何解决这个问题?
http://mywiki.wooledge.org/BashPitfalls
,这能大幅提升你的Bash技能。 - Benoitls --zero
选项(即将每个输出行以NUL而不是换行符"\n"结尾)。请参阅ls源代码。 - user2514157