shell 脚本中的 echo 问题

Issue with echo in shell script

遇到回显输出问题。

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 `)'

您需要转义字符串中的双引号

尝试

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;"

请注意,要打印转义符,您必须对转义符进行转义。

例如

如果你想要\"
您需要输入 \\"