Wenn eine SQL-Abfrage nichts zurückgibt, wie kann ich der Shell sagen, dass sie stattdessen „false“ zurückgeben soll?

Wenn eine SQL-Abfrage nichts zurückgibt, wie kann ich der Shell sagen, dass sie stattdessen „false“ zurückgeben soll?

Dies muss nicht unbedingt etwas mit SQL im Besonderen zu tun haben, da ich sicher bin, dass dies auch bei anderen Befehlen der Fall ist.

In diesem Fall sende ich eine Abfrage über die Shell, und wenn die Abfrage mit keiner Tabelle übereinstimmt, wird buchstäblich nichts zurückgegeben, nicht einmal ein Wagenrücklauf.

Wie kann ich meine Shell so skripten, dass in einem solchen Fall stattdessen ein „ 0oder“ falsezurückgegeben wird?

Hier ist mein Beispielbefehl, der mein Problem verursacht:

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

Antwort1

-vDie Option für den ausführlichen Modus sollte Ihnen mehr Ergebnisse liefern. Ich kann das momentan nicht ausprobieren, da ich keinen SQL-Server laufen habe.

Antwort2

Mein Cousin hat mir diese Lösung angeboten. Ich habe sie getestet und sie funktioniert.

Einzelne Zeile:

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`

Heruntergebrochen:

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

verwandte Informationen