パターンをスクリプトのパラメータとして使用するときに拡張を防ぐにはどうすればよいですか?

パターンをスクリプトのパラメータとして使用するときに拡張を防ぐにはどうすればよいですか?

これを行うには、非常に単純なスクリプトが必要です。

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ではない)だけを見ることができます。

関連情報