Hífen (-) ignorado no final de um comando canalizado aninhado dentro de uma função?

1

Eu uso o Ubuntu 16.04 (xenial) com o Bash 4.3.48 (1).

Com base na resposta de Stephen Kitt nesta sessão , Tentei executar o seguinte comando como parte de uma função chamada imb() :

mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip" -

Eu obtive o arquivo no qual a função imb() está localizada:

source ~/functions.sh

A função

imb() {
    drt="/var/www/html"
    date="$(date +\%F-\%T)"
    mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip" - # Note the hyphen before this comment;
    zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"
    rm -f "$drt/db-$date.zip"
}

Meu problema

A chamada da função falha com o erro zip :

zip error: Nothing to do! (/var/www/html/db-2018-04-13-22:27:47.zip)

Isso parece acontecer porque o hífen ignorou de alguma forma; Eu assumo que a partir de uma olhada em:

type -a imb

quais saídas:

imb is a function

imb () {
    date="$(date +\%F-\%T)";
    mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip";
    zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*";
    rm -f "$drt/db-$date.zip" 
}

Eu notei o hífen faltando aqui.

Minha pergunta

Por que a função falha / por que o Bash supostamente ignora o hífen?

    
por user9303970 14.04.2018 / 00:42

1 resposta

2

Você tinha uma versão antiga da função em seu ambiente e não havia reenviado o arquivo depois de editá-lo para adicionar a - ausente.

Quando você re-source o arquivo, ou reinicie o seu shell, você obteve a versão corrigida da função que você viu no arquivo. Essa versão funciona.

Isso é realmente tudo que existe para isso; Não há nada de interessante para explicar aqui. É uma situação bastante comum que o ambiente fica fora de sincronia com os arquivos que o configuram e isso leva a uma confusão momentânea com frequência, mas é facilmente resolvido como neste caso.

    
por 17.04.2018 / 02:03