我已使用以下方法将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'以及我们如何摆脱它。
感谢您的建议。
答案 0 :(得分:0)
第二种方法是使用grep -v
来删除附加行。
您可以在第一种方法中使用带有附加括号的过滤器。
dbRole=$((cat | grep -v "^$") <<-EOF
1
2
3
5
EOF
)
grep .
,head -1
,sed '$d'
之间有一些区别。