2015-04-23 50 views
0

回顯輸出問題。shell腳本中的回顯問題

line=table_name 
 

 
echo "SELECT CASE WHEN FORMAT_TYPE LIKE '%character%' THEN 'replace(replace(replace('||ATTNAME||',''\'',''\\''),''"'',''\"''),''|'',''\|'') as '||ATTNAME||',' ELSE ATTNAME||',' END FROM _V_RELATION_COLUMN WHERE NAME = '$line' ORDER BY ATTNUM;"

輸出我在尋找類似如下:

SELECT CASE WHEN FORMAT_TYPE LIKE '%character%' 
 
        THEN 'REPLACE(REPLACE(REPLACE('||ATTNAME||',''\'',''\\''),''"'',''\"''),''|'',''\|'') AS '||ATTNAME||',' 
 
        ELSE ATTNAME||',' 
 
       END 
 
FROM _V_RELATION_COLUMN WHERE NAME IN ('table_name') 
 
ORDER BY ATTNUM;

但要真的誤差

-bash: syntax error near unexpected token `)'

+0

同樣的錯誤:回聲「SELECT CASE WHEN FORMAT_TYPE LIKE '%字符%',然後 '替換(更換(更換(' || ATTNAME ||」, '' \ '', '' \\ ''), '' \ 「 '', '' \\」'), '' | '', '' \ | '') as'|| ATTNAME ||','ELSE ATTNAME ||','END FROM _V_RELATION_COLUMN WHERE NAME ='$ line'ORDER BY ATTNUM;「 –

+0

爲什麼添加更多未轉義的雙引號? – 2015-04-23 11:03:19

回答

0

你需要逃脫雙引號中的字符串

嘗試

echo "SELECT CASE WHEN FORMAT_TYPE LIKE '%character%' THEN 'replace(replace(replace('||ATTNAME||',''\'',''\\''),''\"'',''\\\"''),''|'',''\|'') as '||ATTNAME||',' ELSE ATTNAME||',' END FROM _V_RELATION_COLUMN WHERE NAME = '$line' ORDER BY ATTNUM;" 

注意打印已逃脫越獄逃跑。

如果你想\"
您需要用下面輸入\\\"

+0

理想情況下,我們需要4個反斜槓進行第一次替換。否則就是good.echo「SELECT CASE WHAT FORMAT_TYPE LIKE'%character%' THEN'replace(replace(replace('|| ATTNAME ||','''',''\\\''), ''''','''','''','''','''|'')as'|| ATTNAME ||',' \t \t \t \t ELSE ATTNAME ||' ,' \t \t \t END FROM _V_RELATION_COLUMN WHERE NAME ='$ line'ORDER BY ATTNUM;「 –