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.
顯然,extra
}
在語法上是錯誤的,但根據 Bash,我必須輸入它。
將bash表達式括在
{ }
;中時 你需要終止;
,所以: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"; }