A globalização de arquivos estendida não funciona com o cat dentro do script bash

5

Quando, no meu terminal, eu digito

cat ~/my/+(a|b)/doc

Ele lê ok de ambos ~ / my / a / doc e ~ / my / b / doc, mas quando eu coloco esse comando em um script bash :

#!/bin/bash
cat ~/my/'+(a|b)'/doc

Eu recebo o erro:

cat: ~/my/+(a|b)/doc: No such file or directory

Não é possível usar globbing estendido dentro de um script bash ?

    
por François ッ Vespa ت 15.08.2012 / 15:21

1 resposta

8

Você precisa ativar extglob :

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

+() é um padrão estendido, é reconhecido apenas quando extglob está habilitado. Por padrão, extglob está ativado em shells interativos e desativado em shells não interativos.

    
por 15.08.2012 / 15:26