declare -a result=`$ORACLE_HOME/bin/sqlplus -silent $DBUSER/$DBPASSWORD@$DB << EOF $SQLPLUSOPTIONS $roam_query exit; EOF`
我正在尝试从oracle数据库中提取数据并填充bash变量。选择查询有效,但是它返回多行,并且这些行作为长连续字符串返回。我想从数据库中捕获数组索引中的每一行,例如:
index[0] = row 1 information
index[1] = row 2 information
请帮助。所有建议表示赞赏。我检查了所有文档,但没有运气。谢谢。我正在使用solaris Unix
答案 0 :(得分:0)
如果您使用bash版本4,则可以使用readarray -t
命令来执行此操作。任何最近模糊的linux都应该具有bash v4,但我不知道Solaris。
顺便说一句,我还建议使用双引号将变量引用(例如"$DBUSER/$DBPASSWORD@$DB"
而不只是$DBUSER/$DBPASSWORD@$DB
)(在本文档中除外),使用$( )
而不是反引号,并使用小写或大小写混合的变量名(一堆具有特殊含义的全大写字母名,如果您偶然使用其中一个,可能会发生奇怪的事情)。
我不确定我是否拥有这里文档(SQL命令),但是大致是我的处理方法:
readarray -t result < <("$oracle_home/bin/sqlplus" -silent "$dbuser/$dbpassword@$db" << EOF
$sqlplusoptions $roam_query
exit;
EOF
)