2012-03-04 4 views
47

bash 스크립트에서 MySQL 쿼리 결과 값만 가져오고 싶습니다.MySQL 쿼리 결과에서 bash로 필드를 가져 오는 방법

mysql -uroot -ppwd -e "SELECT id FROM nagios.host WHERE name='$host'" 

반환 : : 내 bash는 스크립트에서 반환 된 값을 가져올 수있는 방법

+----+ 
| id | 
+----+ 
| 0 | 
+----+ 

예를 들어, 다음 명령을 실행?

답변

88

사용 -s-N :

> id=`mysql -uroot -ppwd -s -N -e "SELECT id FROM nagios.host WHERE name='$host'"` 
> echo $id 
0 

the manual에서 :

Silent mode. Produce less output. This option can be given multiple 
    times to produce less and less output. 

    This option results in nontabular output format and escaping of 
    special characters. Escaping may be disabled by using raw mode; see 
    the description for the --raw option. 

--skip-열 이름

을 -s

--silent, -N

Do not write column names in results. 

편집

-ss뿐만 아니라 작품과 기억하기 훨씬 쉬워처럼 보인다.

+0

가 여러 열이 탭으로 구분됩니다. –

+2

출력으로 오류가 발생하지 않도록하려면 stderr를 리디렉션하십시오. 'id = \'mysql -uroot -ppwd -ss -e "SELECT id FROM nagios.host WHERE name = '$ host'"2>/dev/null \ "' –

+0

여러 열을 가져 오는 방법은 무엇입니까? – Deckard

1

보십시오

mysql -B --column-names=0 -uroot -ppwd -e "SELECT id FROM nagios.host WHERE name='$host'" 

-B는 헤더를 해제 할 열 세퍼레이터

--column - 이름 = 0으로 탭을 사용하여 결과를 출력한다.

1

나는 솔루션을 시도했지만 항상 빈 응답을 받았습니다. 내 경우

솔루션이었다 :

#!/bin/sh 

FIELDVALUE=$(mysql -ss -N -e "SELECT field FROM db.table where fieldwhere = '$2'") 

echo $FIELDVALUE 
4

심지어 더 컴팩트 :

@의 코기의 대답에 유사
id=$(mysql -uroot -ppwd -se "SELECT id FROM nagios.host WHERE name=$host"); 
echo $id; 
관련 문제