当 SQL 查询未返回任何内容时,我该如何告诉 shell 返回“false”?

当 SQL 查询未返回任何内容时,我该如何告诉 shell 返回“false”?

这可能与 SQL 没有什么关系,因为我确信其他命令也会这样做。

在这种情况下,我通过 shell 发送一个查询,如果查询与任何表都不匹配,则实际上不会返回任何内容,甚至不会返回回车符。

我怎样才能编写脚本来在这种情况下返回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

相关内容