Verificando a saída de um comando não está funcionando corretamente via script BASH

0

Ao tentar verificar se um banco de dados remoto existe ou não, estou vendo um comportamento misto com uma instrução condicional.

Tecnicamente, a instrução está funcionando (ela relata corretamente se o banco de dados foi encontrado), mas na falha (nenhum banco de dados foi encontrado), está lançando um erro que não consigo rastrear por algum motivo.

REMOTE_EXISTS=$(mysql --login-path=$REMOTE_HOST --batch --skip-column-names -e "SHOW DATABASES LIKE '"$REMOTE_DB"';" | grep "$REMOTE_DB")

if [[ $? != 0 ]]; then
    die "Checking for $REMOTE_DB failed. Please report this error."
elif [[ $REMOTE_EXISTS ]]; then
    vrb "The database '$REMOTE_DB' has been found to exist on '$REMOTE_HOST'. Proceeding."
else
    die "Oops! We couldn't find '$REMOTE_DB' on the '$REMOTE_HOST' server. Are you sure it's there?"
fi

Não tenho certeza onde estou indo errado. Os detalhes de login estão sendo passados através de configurações armazenadas de mysql_config_editor , o que me leva a acreditar que algo está fundamentalmente errado com a configuração da minha condição ou método.

Infelizmente, o erro é vago e está preso em uma armadilha no meu script, então a reportagem é um pouco confusa. Além disso, eu tentei o seguinte também:

[ "$REMOTE_EXISTS" -eq 0 ]

[[ "$REMOTE_EXISTS" ]]

Sem melhor sorte.

A ajuda é apreciada, obrigado!

    
por Will Ashworth 07.03.2016 / 09:13

1 resposta

2

Eu tentaria

mysql --login-path=$REMOTE_HOST --batch --skip-column-names -e "SHOW DATABASES LIKE '"$REMOTE_DB"';"  > /tmp/remote_db

if [[ $? != 0 ]]; then
    die "Checking for $REMOTE_DB failed. Please report this error."
elif grep -q "$REMOTE_DB" /tmp/remote_db ; then
    vrb "The database '$REMOTE_DB' has been found to exist on '$REMOTE_HOST'. Proceeding."
else
    die "Oops! We couldn't find '$REMOTE_DB' on the '$REMOTE_HOST' server. Are you sure it's there?"
fi
  • Não tenho certeza de que você precisa inserir aspas simples REMOTE_XX var.
por 07.03.2016 / 09:46