2017-12-20 12 views
0

나는 SQLPLUS이 쿼리를 실행해야합니다파이프 "|"를 어떻게 피할 수 있습니까? 쿼리 문자열의 문자 KSH Linux?

q=" 
SELECT count(*) cnt FROM all_tables WHERE UPPER(OWNER||'.'||TABLE_NAME)=UPPER('$tab_')" 

하지만 파이프 "|" KSH로 해석 :

echo $q 

SELECT count(*) cnt FROM all_tables WHERE UPPER(OWNER '.' TABLE_NAME)=UPPER('STGDATA.T_DEL_RW_FIFO_PL_HIS_SC') 

쿼리를 sqlplus에서 실행할 수 있도록 어떻게 이스케이프합니까?

+1

'echo "$ q"'이 문제를 해결해야합니다. – shellter

답변

0

내가 테스트하는 리눅스를 가지고 있지 않지만 오픈 BSD KSH에 그것이

$ ./escape.sh 
/bin/ksh -> SELECT count(*) cnt FROM all_tables WHERE UPPER(OWNER||'.'||TABLE_NAME)=UPPER('') 
$ cat escape.sh 
#!/bin/sh 
q="SELECT count(*) cnt FROM all_tables WHERE UPPER(OWNER||'.'||TABLE_NAME)=UPPER('$tab_')" 
echo $SHELL "->" $q 

을 사라지게하지만 당신은 무엇을가있는 경우 보통 백 슬래시

$ echo \|\| 
|| 

처럼 탈출을 시도하지 않습니다 여러 줄로 된 줄 (왜냐하면 내가 줄 바꿈을하고 "SELECT"를 사용하여 고양이를 사용하는 것이 좋습니다. < < EOF 구조.