sqlplus 删除多余的空格

sqlplus removes extra whitespace

我有一个下面的测试 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 正在从我的输出中去除多余的空格,我想保留它。

它不是 SQL*加上这样做,它是 shell。您需要 enclose your variable in quotes:

To preserve whitespace within a string or in a variable, use quoting.

所以不用

echo ${sql_out}

执行以下任一操作:

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

然后输出将是:

aaaa  vvvv   cccc