首页 > 解决方案 > 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 正在从我的输出中去除多余的空格,我想保留它。

标签: bashoracleunixwhitespacesqlplus

解决方案


这样做的不是 SQL*Plus,而是 shell。您需要将变量括在引号中

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

所以而不是

echo ${sql_out}

执行以下任一操作:

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

然后输出将是:

aaaa  vvvv   cccc

推荐阅读