我的导演结构: -
测试 图片 DOC 新图片 angelimage test.sh 5elements10.png boltonclinics5.png
现在我希望2个图像与3rd.png合成并存储在 newimage 之后我希望 newimage 文件夹中的图像转换为特定图像天使。 所以我尝试使用代码
#!/bin/bash
for f in $( ls *.png ); do
composite -gravity center $f ./doc/back.png ./newimage/new$f
done
for f in `ls ./newimage`; do
convert $f -rotate -7 ./angelimage/ang$f
done
现在我发现for循环正常工作,但第二个发出错误,如下所示
convert: unable to open image `new-5elements10.png': @ error/blob.c/OpenBlob/2587.
convert: unable to open file `new-5elements10.png' @ error/png.c/ReadPNGImage/3234.
convert: missing an image filename `new-5elements10.png' @ error/convert.c/ConvertImageCommand/3011.
convert: unable to open image `new-boltonclinics5.png': @ error/blob.c/OpenBlob/2587.
convert: unable to open file `new-boltonclinics5.png' @ error/png.c/ReadPNGImage/3234.
convert: missing an image filename `new-boltonclinics5.png' @ error/convert.c/ConvertImageCommand/3011.
答案 0 :(得分:-1)
不要使用ls(1)来生成送到命令的文件列表。简单的glob扩展就足够了(如下所示)。
引用您的变量以防止出现空白问题。
如果代码中没有任何其他逻辑错误,则应该有效:
#!/bin/bash
for f in *.png;
do
composite -gravity center "$f" ./doc/back.png "./newimage/new${f}"
done
for f in ./newimage/*;
do
convert -rotate -7 "$f" "./angelimage/ang$(basename "$f")"
done