4

我目前正在尝试编写一个 bash 脚本,它可以帮助我逐步浏览目录并检查文件上的 .jpeg 或 .jpg 扩展名。我想出了以下几点:

#declare $PICPATH, etc...

for file in $PICPATH
    if [ ${file -5} == ".jpeg" -o ${file -4} == ".jpg" ];
    then
        #do some exif related stuff here.
    else
        #throw some errors
    fi
done

执行时,bash 不断在 if 行上抛出一个错误:“意外标记 `if' 附近的语法错误。

我对脚本完全陌生;我的 if 语句有什么问题?

谢谢。

4

2 回答 2

11

我认为您只是缺少for循环的 do 子句:

#declare $PICPATH, etc...

for file in $PICPATH; do
    if [ ${file -5} == ".jpeg" -o ${file -4} == ".jpg" ];
    then
        #do some exif related stuff here.
    else
        #throw some errors
    fi
done
于 2013-01-26T21:01:15.953 回答
2
${file -5}

是语法错误。也许你的意思是

${file#*.}

?

无论如何,最好这样做:

for file in $PICPATH; do
    image_type="$(file -i "$file" | awk '{print gensub(";", "", $2)}')"
    case $image_type in
        image/jpeg)
            # do something with jpg "$file"
        ;;
        image/png)
            # do something with png "$file"
        ;;
        *)
            echo >&2 "not implemented $image_type type "
            exit 1
        ;;
    esac
done

如果您只想处理jpg文件,请执行以下操作:

for file in $PICPATH; do
    image_type="$(file -i "$file" | awk '{print gensub(";", "", $2)}')"
    if [[ $image_type == image/jpeg ]]; then
            # do something with jpg "$file"
    fi
done
于 2013-01-26T21:07:02.007 回答