이것은 특히 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