Quando uma consulta SQL não retorna nada, como posso dizer ao shell para retornar um “falso”?

0

Isso pode não ter nada a ver com o SQL em particular, porque tenho certeza de que outros comandos farão isso também.

Neste caso, envio uma consulta através do shell, e se a consulta não corresponder a nenhuma tabela, literalmente nada será retornado, nem mesmo um retorno de carro.

Como posso fazer o script do meu shell que, nesse caso, um 0 ou false é retornado?

Aqui está o meu comando de amostra que está produzindo o meu problema:

mysql -u Popey --password='Misses Jono' -s -N --disable-column-names -e 
"select term_id from shuttleworth.wp_terms where name = 'nonExistentName' LIMIT 1;"
    
por Akiva 21.12.2016 / 17:59

2 respostas

0

A opção

-v para o modo detalhado deve fornecer mais resultados. Eu não posso tentar isso agora, já que eu não tenho um servidor SQL em execução.

    
por Julian Berger 21.12.2016 / 18:40
0

Meu primo me ofereceu essa solução. Testado e funciona.

Linha única:

response=$(mysql -u popey --password='Misses Jono' -s -N --disable-column-names -e "select term_id from shuttleworth.wp_terms where name = 'non-existent-name' LIMIT 1;") && if [ -z "$response" ]; then echo false; else echo $response; fi'

quebrado:

response=
    $(mysql 
      -u popey 
      --password='Misses Jono' 
      -s -N --disable-column-names 
      -e 
          "SELECT term_id 
           FROM shuttleworth.wp_terms
           WHERE name = 'non-existent-name' 
           LIMIT 1;"
      ) 
&& if [ -z "$response" ]; 
   then echo false; 
   else echo $response; 
   fi
    
por Akiva 21.12.2016 / 19:20