我有一个经过测试的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正在从输出中删除多余的空格,我想保留它。
答案 0 :(得分:5)
这不是SQL * Plus,而是外壳程序。您需要enclose your variable in quotes:
要在字符串或变量中保留空白,请使用quoting。
所以不是
echo ${sql_out}
执行以下任一操作:
echo "${sql_out}"
printf "%s\n" "${sql_out}"
,输出将是:
aaaa vvvv cccc