Copie os arquivos excluindo x, y, z causando erro no shell script

1

Eu não sou bem versado em scripts de shell, mas imagino que isso seja uma correção dolorosamente fácil, mas está me iludindo.

Eu preciso copiar o conteúdo de um diretório, excluindo vários arquivos. Eu tenho um comando que funciona quando eu insiro no terminal, mas quando é executado em um shell script ele falha com um erro de sintaxe ou simplesmente não funciona.

O comando em questão é:

cp -r path/to/!(dir1|dir2|dir3) destination

Qualquer ajuda seria muito apreciada!

    
por elspiko 20.02.2013 / 11:44

1 resposta

4

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).

    
por 20.02.2013 / 12:12