Essa é a sintaxe ksh
. bash
apenas reconhece essa sintaxe quando você ativa sua opção extglob
com:
shopt -s extglob
Portanto, você precisa adicionar essa linha ao início do script ou interpretá-la por ksh
em vez de bash
ou chamar seu script com env BASHOPTS=extglob your-script
(esse último não é recomendado, pois isso permitiria extglob
para cada shell bash que seu script gera.
Possivelmente você tem essa opção ativada em seu ~/.bashrc
, e é por isso que ele funciona no prompt ( ~/.bashrc
é lido apenas por shells interativos que não são de login).