sqlplus删除多余的空格

时间:2018-09-27 15:59:43

标签: bash oracle unix whitespace sqlplus

我有一个经过测试的ksh文件

#!/bin/ksh
(
sqlplus -s << EOF
    ${DATABASE}
    SET SERVEROUTPUT ON;
    SET HEAD OFF
    SET FEED OFF
    SET DEFINE OFF
    SET PAGES 0
    SET COLSEP ";"
    WHENEVER SQLERROR EXIT SQL.SQLCODE      
    SELECT 'aaaa  vvvv   cccc'  FROM DUAL;          
    EXIT
EOF
) | while read sql_out
    do
        echo ${sql_out} 
    done

预期输出为

aaaa  vvvv   cccc

但是观察到的输出是

aaaa vvvv cccc

Sqlplus正在从输出中删除多余的空格,我想保留它。

1 个答案:

答案 0 :(得分:5)

这不是SQL * Plus,而是外壳程序。您需要enclose your variable in quotes

  

要在字符串或变量中保留空白,请使用quoting

所以不是

echo ${sql_out}

执行以下任一操作:

echo "${sql_out}"
printf "%s\n" "${sql_out}"

,输出将是:

aaaa  vvvv   cccc