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

관련 정보