为什么在外壳变量后追加换行符?

时间:2018-12-23 10:35:28

标签: ksh

我已使用以下方法将SQL输出分配给变量。

dbRole=$(${SQLPLUSPGM} -s / as sysdba <<-EOF
set head off
set verify off
set feedback off
select trim(translate(database_role,' ','_')) from v\$database;
exit;
EOF
)

但是变量o / p附加了"\n"字符,即\nPHYSICAL_STANDBY

但是,当我使用以下方法时,它工作正常

${SQLPLUSPGM} -s / as sysdba <<-EOF | grep -v '^$' | read dbRole
set head off
set verify off
set feedback off
select trim(translate(database_role,' ','_')) from v\$database;
exit;
EOF

任何建议为什么它要附加`\ n'以及我们如何摆脱它。

感谢您的建议。

1 个答案:

答案 0 :(得分:0)

第二种方法是使用grep -v来删除附加行。 您可以在第一种方法中使用带有附加括号的过滤器。

dbRole=$((cat | grep -v "^$") <<-EOF
1
2
3

5

EOF
)

grep .head -1sed '$d'之间有一些区别。