패턴을 스크립트의 매개변수로 사용할 때 확장을 방지하려면 어떻게 해야 합니까?

패턴을 스크립트의 매개변수로 사용할 때 확장을 방지하려면 어떻게 해야 합니까?

이 작업을 수행하려면 매우 간단한 스크립트가 필요합니다.

mogrify -resize $1x$2^ -gravity center -crop $1x$2+0+0 $3

따라서 다음과 같이 호출할 수 있습니다.

cropresize.sh 110 110 *.png

문제는 쉘이 *.png패턴을 그대로 스크립트에 전달하는 대신 패턴을 확장한다는 것입니다.

이를 달성하려면 어떻게 해야 합니까(스크립트, 별칭 또는 기타 동등한 솔루션이 작동합니까)?

답변1

셸은 명령에 인수를 전달하기 전에 전역 확장을 수행하므로 이 작업을 투명하게 수행하는 것은 생각할 수 없습니다. 이는 사용자(인수 인용) 또는 무차별 대입(셸의 전역 확장을 완전히 비활성화)에 의해 제어됩니다 set -o noglob.

당신은 잘못된 관점에서 문제를 보고 있습니다. 여러 파일 이름 인수를 허용하도록 스크립트를 변경합니다.

x=$1
y=$2
shift 2
mogrify -resize ${x}x${y}^ -gravity center -crop ${x}x${y}+0+0 "$@"

답변2

시도해 봤어?

cropresize.sh 110 110 \*.png

하지만 당신이 말한 것처럼 확장하는 zsh(bash 아님)만 볼 수 있습니다.

관련 정보