SQL クエリが何も返さない場合、代わりに「false」を返すようにシェルに指示するにはどうすればよいですか?

SQL クエリが何も返さない場合、代わりに「false」を返すようにシェルに指示するにはどうすればよいですか?

これは特に SQL とは関係ないかもしれません。他のコマンドでも同様の動作が実行されるはずです。

この場合、シェルを介してクエリを送信しますが、クエリがどのテーブルにも一致しない場合は、文字通り何も返されず、キャリッジ リターンも返されません。

このような場合に、代わりに0または がfalse返されるようにシェルをスクリプト化するにはどうすればよいですか?

問題を引き起こしているサンプル コマンドは次のとおりです。

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

答え1

-v詳細モードのオプションを使用すると、より多くの出力が得られるはずです。SQL サーバーを実行していないため、現時点ではこれを試すことはできません。

答え2

いとこがこの解決策を提案してくれました。テストしてみたところ、うまくいきました。

単線:

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`

内訳:

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

関連情報