Fra*_*a ت 6 shell bash shell-script wildcards
当我在终端中输入
cat ~/my/+(a|b)/doc
Run Code Online (Sandbox Code Playgroud)
它从 ~/my/a/doc 和 ~/my/b/doc 读取都正常,但是当我将该命令放入bash脚本时:
#!/bin/bash
cat ~/my/'+(a|b)'/doc
Run Code Online (Sandbox Code Playgroud)
我收到错误:
cat: ~/my/+(a|b)/doc: No such file or directory
Run Code Online (Sandbox Code Playgroud)
不能在bash脚本中使用扩展通配符吗?
你必须打开extglob:
#!/bin/bash
shopt -s extglob
cat ~/my/+(a|b)/doc
Run Code Online (Sandbox Code Playgroud)
+()是一个扩展模式,只有在extglob启用时才被识别。默认情况下extglob,在交互式 shell 中打开,在非交互式 shell 中关闭。