Bash 获取具有有限属性的图片

Bash 获取具有有限属性的图片

我正在尝试为图片上的批量操作创建一个新的简单 bash 脚本。我只需要几张图片,在本例中,图片大于 2Mb,宽度大于 2000px。但我的脚本似乎不起作用,我尝试了很多变体,但总是收到错误第 10 行未找到命令

我认为我的问题在于 if 条件,也许还在于字符串到整数的转换......

我正在使用识别(ImageMagick Packages)来获取每张图片的参数。

¿我做错了什么?

#!/bin/bash

for d in */* ; do
        WIDTH="$(identify -format '%w' "$d")"
        WIDTH_LIMIT=$(($WIDTH+0))
        DATA="$(identify -format '%b' "$d")"
        SIZE=${DATA::-1}
        SIZE_LIMIT=$(($SIZE+0))
        if ["$WIDTH_LIMIT" -ge 2000] || ["$SIZE_LIMIT" -gt 2097152]
        then
        echo width in px: "$(($WIDTH+0))"px  ..  Size in bytes:  "$(($SIZE+0))" bytes
        fi

done

答案1

[是二进制函数或 bash 集成函数。
if等待执行将返回 0 或 1 的内容。
在您的情况下,您尝试执行该程序:["$WIDTH_LIMIT"带有参数-ge2000]因为您的 shell 使用空格来分隔参数,并且["$WIDTH_LIMIT"不是正确的二进制或 bash 命令。
因此,您应该始终在 and 之前和之后添加空格[]因为它们是常规命令。你无法输入echo$UTY你的 shell 不会将其识别为命令,PATH 我意识到它很容易记住[语法,因为它有一个手册页。
尝试一下man [,您会发现它只是一个可执行文件或内置 shell 命令(取决于您的 Unix/Linux 风格),并带有常规参数,后面需要有空格。

相关内容