2017-12-20 21 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

私がテストするためにLinuxを持っていませんが、OpenBSDの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 \|\| 
|| 

のように脱出しようとしません。複数行の文字列( "と"の間に改行が表示される原因となります。私は猫を使用してください。< < EOF構造体

関連する問題