You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ImageMagick脚本通配符语法选择:()还是{}?

图片格式验证:ImageMagick命令语法选择建议

在编写使用magick identify验证图片扩展名与实际格式匹配的脚本时,优先选用带引号的"*.{jp*,png,webp}"语法,理由如下:

一、各语法的兼容性与容错性对比

1. Shell与ImageMagick的语法支持差异

  • Shell层面:Bash不支持*.(jp*|png|webp)这类括号分组语法,仅Zsh支持;而无引号的*.{jp*,png,webp}会被Shell提前展开,若文件夹缺少某类格式文件,Zsh会直接报错,Bash会发出警告。
  • ImageMagick层面:两种通配语法(带引号的{}和())都能直接识别处理,因为引号会阻止Shell展开通配符,让ImageMagick自行解析匹配规则。

2. 实际测试表现(基于GNU bash 3.2.57、zsh 5.9)

ImageMagick命令测试

命令BashZsh
magick identify *.(jpg|png)–(无法运行)✓(全场景兼容)
magick identify *.{jpg,png}✓‡(缺文件时警告)✓†(必须两类文件都存在)
magick identify "*.{jpg,png}"✓(全场景兼容)✓(全场景兼容)

系统file命令测试(对比Shell语法支持)

命令BashZsh
file *.(jpg|png)–(无法运行)✓(全场景兼容)
file *.{jpg,png}✓‡(缺文件时警告)✓†(必须两类文件都存在)
file "*.{jpg,png}"–(无法运行)–(无法运行)

符号说明:

  • ✓ - 可正常运行,支持所有场景:a)同时有JPG和PNG;b)仅PNG;c)仅JPG;d)无对应文件
  • ✓† - 可运行,但必须至少有一个JPG和一个PNG
  • ✓‡ - 可运行,但缺少某类文件时会发出警告
  • – - 无法运行

二、语法选择优先级

  1. 首选:带引号的"*.{jp*,png,webp}":跨Bash、Zsh环境全兼容,不管目标文件夹中是否存在对应格式的文件,都能稳定执行,容错性拉满。
  2. 次选:*.(jp*|png|webp):仅适用于Zsh环境的脚本,无法在Bash下运行,跨环境脚本禁用。
  3. 禁用:无引号的*.{jp*,png,webp}:容错性极差,缺少任意一类文件就会报错或警告,完全不适合脚本场景。

内容的提问来源于stack exchange,提问作者user22996855

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:13:12