Расширенное файловое globbing не работает с cat внутри bash script

Когда в моем терминале я печатаю

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 ?

Вы должны включить extglob :

 #!/bin/bash shopt -s extglob cat ~/my/+(a|b)/doc 

+() – расширенный шаблон, который распознается только при extglob . По умолчанию extglob в интерактивных оболочках и выключен в неинтерактивных оболочках.