我需要一个非常简单的脚本来执行此操作:
mogrify -resize $1x$2^ -gravity center -crop $1x$2+0+0 $3
这样我就可以这样称呼它:
cropresize.sh 110 110 *.png
问题在于 shell 扩展了*.png
模式,而不是将其按原样传递给脚本。
我怎样才能实现这一点(脚本、别名或任何其他等效的解决方案都可以)?
答案1
由于 shell 在将参数传递给命令之前执行全局扩展,因此我无法想到透明地执行此操作:它要么由用户控制(引用参数),要么由暴力控制(完全禁用 shell 的全局扩展)和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)像你说的那样扩展它。