erro de sintaxe próximo ao token inesperado '(' OR sem execução apropriada

1

Estou tentando fazer algo no X dirs, mas não no Y, via terminal. Quando eu faço

cd /mnt/dir/ && 
for i in !(dira|dirb|dird)/; do echo "$i"; done && 
cd y/ && for i in !(dirz)/; do echo "$i"; done

no terminal tudo está bem, mas quando eu tento colocá-lo em um arquivo .sh e executá-lo eu recebo o syntax error near unexpected token ( ou, se eu escapar de ( e | , eu só obtenho a parte for como saída (por exemplo: !(dira|dirb|dird)/ )

Como posso consertar isso para que ele funcione em um arquivo .sh ou mesmo em um alias dentro do meu arquivo .bashaliases?

    
por Adrian Skar 21.08.2018 / 11:46

1 resposta

3

Você está usando um padrão de globbing estendido. Para que isso funcione no seu script, verifique se você está

  1. usando bash para executar o script e
  2. ative a opção extglob shell no script.

Você pode ativar a opção extglob shell com o comando

shopt -s extglob

na fonte do script.

    
por 21.08.2018 / 11:51