Bash sqlplus删除额外的空白
我有一个测试以下的ksh文件Bash sqlplus删除额外的空白,bash,oracle,unix,whitespace,sqlplus,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
#!/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
Sqlplus正在从我的输出中去掉额外的空格,我想保留它。这不是SQL*Plus,而是shell。您需要: 要在字符串或变量中保留空白,请使用 所以不是
echo ${sql_out}
请执行以下任一操作:
echo "${sql_out}"
printf "%s\n" "${sql_out}"
然后输出为:
aaaa vvvv cccc
它不是SQL*加上这样做,它是shell。您需要: 要在字符串或变量中保留空白,请使用 所以不是
echo ${sql_out}
请执行以下任一操作:
echo "${sql_out}"
printf "%s\n" "${sql_out}"
然后输出为:
aaaa vvvv cccc
不要执行printf${sql\u out}\n-printf的第一个参数是格式说明符:如果变量的值包含%,结果很可能不是您期望的结果。太好了。。。我已经把重点放在了从DUAL中选择“aaaa VVV cccc”+1Don't do printf${sql_out}\n-printf的第一个参数是格式说明符:如果变量的值包含%,结果很可能不是您期望的结果。太好了。。。我已经把重点放在了从DUAL中选择“aaaa VVV cccc”+1.