我正在尝试为图片上的批量操作创建一个新的简单 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"
带有参数-ge
,2000]
因为您的 shell 使用空格来分隔参数,并且["$WIDTH_LIMIT"
不是正确的二进制或 bash 命令。
因此,您应该始终在 and 之前和之后添加空格[
,]
因为它们是常规命令。你无法输入echo$UTY
你的 shell 不会将其识别为命令,PATH
我意识到它很容易记住[
语法,因为它有一个手册页。
尝试一下man [
,您会发现它只是一个可执行文件或内置 shell 命令(取决于您的 Unix/Linux 风格),并带有常规参数,后面需要有空格。