sarego sarego - 1 year ago 73
Bash Question

How to store result from SQLPlus to a shell variable

My requirement is to store the result of an sqlplus operation into a variable in my shell script.
I need the result of the following operation which is in my .sh file

sqlplus 'user/pwd' @test.sql

I have already tried

testvar = 'sqlplus 'user/pwd'

but that doesn't work.


I changed it to

testvar=sqlplus foo/bar@SCHM @test.sql

and it says

SQL*Plus:: not found [No such file or directory]

I tried with

testvar=$(sqlplus foo/bar@SCHM

and it gives the same error.
When I try without the variable assignment like below

sqlplus foo/bar@schm @test.sql

it works fine

Answer Source

Employ backticks:

testvar=`sqlplus foo/bar @test.sql`

or should that be of syntactical eyesore:

testvar=$(sqlplus foo/bar @test.sql)

You clearly know to take the right sql*plus commands to limit superfluous output, yes? :) and of course beware the backticking will collapse the whitespace of the output.