如何将从表中检索到的列值存储到我的shell脚本中的变量中,并将其用于整个脚本

时间:2011-12-28 03:34:04

标签: shell

我在这个论坛中见过以下脚本,它很有用

echo "This will print the Date"  
VALUE=`sqlplus -silent apps/Z4vRD3me <<END 
set pagesize 0 feedback off verify off heading off echo off 
select sysdate from dual  
exit; 
END`

# xx=$(echo 'select sysdate from dual' | sqlplus -silent apps/Z4vRD3me)  
echo $VALUE 
echo "End of SQL"  

但是在退出SQL * PLUS之后,我想在进一步的unix脚本中使用存储在'VALUE'变量中的sysdate值

执行此脚本后,我们将返回unix模式。然后,如果我输入'echo $ VALUE'/'$ VALUE',则说“ksh:SQL * Plus :: not found”。

您能否给我解决方案来存储整个unix脚本所需的列值?

谢谢

1 个答案:

答案 0 :(得分:1)

一个技巧是使用sql生成有效的shell命令并将其捕获到假脱机文件中。然后获取假脱机文件

TMPFILE=tmp_$$.sh
sqlplus -silent user/password <<END
set feedback off
set head off
spool $TMPFILE
Select 'export value=' || To_Char(Sysdate) from dual;
Select 'export TblCount=' || To_Char(count(*)) from all_tables;
spool off
exit
END

#Run the commands you generated in the current process and remove temp
. $TMPFILE
rm $TMPFILE

echo $value 
echo $TblCount