2017-02-16 2 views
1

필자가 작성한 SQL의 "count"변수에서 숫자 값을 반환하려고합니다. 불행히도 Ingres 오류 메시지가 나타납니다. 내가 뭘 잘못하고 있는거야?쉘 스크립트에서 테이블 수를 변수로 설정하는 중 ..?

아래

참조 쉘 스크립트 코드 :

#!/bin/ksh 
############### 

count=$(sql db_name -s -N "SELECT COUNT(*) FROM temp_table;") 

echo "Table count = $count" 

참조 앵그르 오류 아래 :

Table count = INGRES TERMINAL MONITOR Copyright 2008 Ingres Corporation 
E_US0022 Either the flag format or one of the flags is incorrect, 
    or the parameters are not in proper order. 

예상 결과 :

Table count = 8 
+0

당신이 Korn 쉘을 사용하는 경우에서,'ksh' 태그를 사용 설명서를 참조

count='echo "select count(*) from iitables;\g" | sql -S iidbdb' 

가능 플래그에 대한 추가 정보를 원하시면 : 아마 여러분들은 (bash는) 이런 식으로 뭔가를 원하는 'bash' 태그가 아닙니다. 그럼에도 불구하고 이것은 셸 문제는 아닙니다. SQL 명령에 문제가 있습니다. – chepner

+1

당신은'sql db_name -s -N "SELECT COUNT (*) from temp_table;"'을 실행하여 스크립트 외부의 결과물을 보았습니까? – Fred

답변

1

이 시도 :

=>|Fri Feb 17|01:51:01|[email protected][STATION]:/var/lib/pgsql> ./test.sh 
count ------- 3 (1 row) 

=>|Fri Feb 17|01:51:04|[email protected][STATION]:/var/lib/pgsql> cat test.sh 
#!/bin/bash 

count=$(psql <<EOF 
select count(*) from mdn_2 ; 
EOF 
) 
# Prints the result captured from DB 
echo $count 

=>|Fri Feb 17|01:51:05|[email protected][STATION]:/var/lib/pgsql> 
+0

결과는 다음과 같습니다. "INGRES TERMINAL MONITOR 저작권 2008 Ingres Corporation Ingres SPARC SOLARIS 버전 II 9.2.1 로그인 2011 년 4 월 20 일 11:30:40 2017 계속 실행.. + ----------- - + | col1 | + ------------- + | 8 | + ------------- + (1 row) 귀하의 SQL 문은 Ingres Version II 9.2.1 logout 2010 년 4 월 20 일 11:30:40 2017 " 어떻게하면"8 "을 반환 할 수 있습니까? – TCP

+0

여기에서 스크린 샷을 공유 할 수 있습니까? 그런 다음 확인하고 응답 할 수 있습니다. – User9102d82