bashでファイル名に半角スペースが含まれたものを処理する
jpg画像を一気にconvertした時につまずいた。
#!/bin/bash
for file in *.jpg
do
convert $file ${file%.jpg}.png
done
エラー文
convert: unable to open image `test': No such file or directory @ error/blob.c/OpenBlob/2617.
convert: no decode delegate for this image format `test' @ error/constitute.c/ReadImage/544.
convert: unable to open image `.jpg': No such file or directory @ error/blob.c/OpenBlob/2617.
convert: no decode delegate for this image format `.jpg' @ error/constitute.c/ReadImage/544.
convert: no images defined `test.png' @ error/convert.c/ConvertImageCommand/3021.
どうやら区切り文字を変えてやれば動作するらしい。
行の区切りとする文字を\nだけにする。
()の中に書いているのは、IFSを一時的に使用するため。
#!/bin/bash
(
IFS="$'\n'"
for file in *.jpg
do
convert $file ${file%.jpg}.png
done
)