Bash 需要额外的右大括号来定义函数

Bash 需要额外的右大括号来定义函数

这个网站,我得到了以下 Bash 函数来使用 ImageMagick 调整图像大小:

smartresize() { mogrify -path $3 -filter Triangle -define filter:support=2 -thumbnail $2 -unsharp 0.25x0.08+8.3+0.045 -dither None -posterize 136 -quality 82 -define jpeg:fancy-upsampling=off -define png:compression-filter=5 -define png:compression-level=9 -define png:compression-strategy=1 -define png:exclude-chunk=all -interlace none -colorspace sRGB $1 }

当我输入上面的内容并按下 后<Return>,Bash 会发出提示...>,表明该命令不完整。再次按下<Return>不会使其消失。}在返回到标准 Bash 提示符之前,我必须输入一个额外的右大括号。

我以前曾这样做过,但没有观察到这种行为。 有人可以建议我如何找出原因吗?

其他症状

我尝试使用smartresize()

$ mkdir smartout # Create destination folder
$ smartresize C82A4D44-0A8B-4BBA-90DB-45F683B3D8E6rot.jpeg 2016 smartout

# Output from smartresize
mogrify: unable to open image '}': No such file or directory @ error/blob.c/OpenBlob/3537.
mogrify: no decode delegate for this image format `' @ error/constitute.c/ReadImage/562.

显然,额外的内容}在语法上是错误的,但根据 Bash 的说法,我必须输入它。

答案1

封闭时表达于{ };你需要以 终止;,所以:

smartresize() { mogrify -path $3 -filter Triangle -define filter:support=2 -thumbnail $2 -unsharp 0.25x0.08+8.3+0.045 -dither None -posterize 136 -quality 82 -define jpeg:fancy-upsampling=off -define png:compression-filter=5 -define png:compression-level=9 -define png:compression-strategy=1 -define png:exclude-chunk=all -interlace none -colorspace sRGB "$1"; }

相关内容