이미지에 대한 일괄 작업을 위한 새로운 간단한 bash 스크립트를 만들려고 합니다. 몇 개의 이미지만 필요합니다. 이 경우 이미지는 2Mb보다 크고 너비는 2000px보다 큽니다. 하지만 내 스크립트가 작동하지 않는 것 같습니다. 다양한 변형을 시도했지만 항상 오류가 발생합니다.10행에서 명령을 찾을 수 없습니다..
내 문제는 if 조건과 문자열을 정수로 변환하는 데 있다고 생각합니다.
각 이미지의 매개변수를 가져오기 위해 인식(ImageMagick 패키지)을 사용하고 있습니다.
¿ 내가 뭘 잘못했나요?
#!/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의 내용이 반환됩니다. 귀하의 경우 쉘이 인수를 구분하기 위해 공백을 사용하고 올바른 바이너리 또는 bash 명령이 아니기 때문에 인수를 사용하여
프로그램을 실행하려고 합니다. 따라서 일반 명령이므로 항상 앞뒤에 공백을 추가해야 합니다 . 명령으로 인식하지 않고는 쉘 에 입력할 수 없습니다 . 매뉴얼 페이지가 있으므로 구문을 기억하기 쉽다는 것을 깨달았습니다 . 한번 시도해 보면 이것이 단지 실행 가능하거나 내장된 셸 명령(Unix/Linux 취향에 따라 다름)이며 일반 인수 뒤에 공백이 와야 한다는 것을 알 수 있습니다.["$WIDTH_LIMIT"
-ge
2000]
["$WIDTH_LIMIT"
[
]
echo$UTY
PATH
[
man [