当我在终端中输入
cat ~/my/+(a|b)/doc
它从 ~/my/a/doc 和 ~/my/b/doc 读取都正常,但是当我将该命令放入脚本中时bash
:
#!/bin/bash
cat ~/my/'+(a|b)'/doc
我收到错误:
cat: ~/my/+(a|b)/doc: No such file or directory
是否无法在bash
脚本内使用扩展通配符?
答案1
您必须打开extglob
:
#!/bin/bash
shopt -s extglob
cat ~/my/+(a|b)/doc
+()
是扩展模式,仅在extglob
启用时才被识别。默认情况下extglob
,在交互式 shell 中打开,在非交互式 shell 中关闭。