如何从<< EOF中捕获结果并将其放入bash中的变量中?

时间:2019-06-19 21:44:36

标签: sql linux bash oracle shell

我需要创建一个Linux脚本,并且在此脚本中,需要使用<<EOF捕获Oracle中SQL查询的结果,并将其放入变量中,例如:

sqlplus -s /nolog<<EOF
conn c##myuser/mypassowd
col product for a20
select product from myuser.table where id = 10;
EOF

我需要将SQL查询的结果放入bash变量中,该怎么办?

2 个答案:

答案 0 :(得分:2)

您要使用here document作为命令,然后将输出重定向到某个文件。

类似这样的东西:

sqlplus -s /nolog > myfile.txt <<EOF
conn c##myuser/mypassowd
col product for a20
select product from myuser.table where id = 10;
EOF 

我没有sqlplus可以自己测试,但是上面应该是“ close” ...

这应该可以将其放入变量:

myvar=$(sqlplus -s /nolog <<EOF
  conn c##myuser/mypassowd
  col product for a20
  select product from myuser.table where id = 10;
EOF
)

答案 1 :(得分:1)

[这是用于Postgres,但shell语法相同]


#/bin/sh
DB=twitters
DB_USER=postgres

count=`psql -qtA -U ${DB_USER} ${DB} <<OEF
SELECT COUNT(*)
FROM tweeps;
OEF`

echo "Count=${count}"

#eof

输出:


Count=14458