O comando ZSH é executado no shell, mas não no script

1

Eu corro este comando zsh encadeado no meu terminal:

cd /path/to/backups/pod3 && rm -rf ./*(Om[1,-10])

Isso funciona bem e remove os diretórios apropriados conforme o esperado.

No entanto, quando coloco isso em um script, recebo este erro:

syntax error near unexpected token '('

Eu fiz algumas pesquisas e parece que preciso definir isso no meu shell script:

setopt extended_glob

No entanto, depois de adicionar essa linha na parte superior do script, ele gera seu próprio erro.

setopt: command not found

Então, não tenho certeza do que estou fazendo de errado aqui e como corrigir isso.

    
por Danny Englander 28.08.2016 / 16:56

1 resposta

3

Você precisa adicionar um she-bang ao seu script para informar ao sistema que o script deve ser interpretado por zsh , caso contrário, ele será interpretado por sh :

#! /bin/zsh -
cd /path/to/backups/pod3 && rm -rf ./*(Om[1,-10])

Altere /bin/zsh para o caminho real do executável zsh ou altere toda a linha bang-bang para:

#! /usr/bin/env zsh

para o caminho de zsh a ser pesquisado em $PATH (assumindo que o comando env esteja em /usr/bin , que é o caso na maioria dos sistemas).

    
por 28.08.2016 / 17:00