¿Cómo evito la expansión cuando uso un patrón como argumento para un script?

Necesito un script muy simple que haga esto:

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

para que pueda llamarlo de esta manera:

 cropresize.sh 110 110 *.png 

el problema es que el shell expande el patrón *.png lugar de pasarlo tal como está al script.

¿Cómo puedo lograr esto (script, alias o cualquier otra solución equivalente está bien)?

Dado que el intérprete de commands realiza la expansión glob antes de que los arguments se entreguen al command, no hay forma de pensar que lo haga de forma transparente: es controlado por el usuario (cite el parámetro) o fuerza bruta (deshabilite globbing completamente para su shell con el set -o noglob ).

Estás viendo el problema desde el lado equivocado. Cambie su secuencia de commands para aceptar múltiples arguments de nombre de file:

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

Has probado

 cropresize.sh 110 110 \*.png 

Pero solo puedo ver zsh (no bash) expandiéndolo como dices.