http://blog.itpub.net/13885898/viewspace-1670297/

有时候我们可能会需要在Shell脚本中执行SELECT语句,并将结果赋值给一个变量,对于这样的情形,我们可以用以下的方法来达到目的。

点击(此处)折叠或打开

  1. #!/bin/ksh
  2. #
  3. # Created : 2015.05.25
  4. # Updated : 2015.05.25
  5. # Author : Jet Chenxi Zhang
  6. # Description : Get SELECT result in Shell
  7. # Variable Definitions #
  8. ORACLE_SID=audtest
  9. ORACLE_HOME=/app/oracle/product/database/11.2.0/db_1
  10. PATH=$PATH:$ORACLE_HOME/bin
  11. DBNAME=
  12. # Get Database name by quering v$database #
  13. DBNMAE=`
  14. sqlplus -s /nolog <<EOF
  15. set echo off feedback off heading off underline off;
  16. conn / as sysdba;
  17. select name from v\\$database;
  18. exit;
  19. EOF`
  20. echo "Database name: "$DBNMAE

如上代码,可以将获取Database Name,执行结果如下:

  1. [oracle@hxddcx02 ~]$ ./query_dbname.sh
  2. Database name: AUDTEST

可以看到SELECT的结果已被正确赋值给Shell的变量。如果SELECT中有多个列的值,也可以用此方法,只是需要将结果进行分拆,如用awk:

点击(此处)折叠或打开

  1. #!/bin/ksh
  2. #
  3. # Created : 2015.05.25
  4. # Updated : 2015.05.25
  5. # Author : Jet Chenxi Zhang
  6. # Description : Get SELECT results in Shell
  7. # Variable Definitions #
  8. ORACLE_SID=audtest
  9. ORACLE_HOME=/app/oracle/product/database/11.2.0/db_1
  10. PATH=$PATH:$ORACLE_HOME/bin
  11. QUERYRES=
  12. DBID=
  13. DBNAME=
  14. # Get Database name by quering v$database #
  15. QUERYRES=`
  16. sqlplus -s /nolog <<EOF
  17. set echo off feedback off heading off underline off;
  18. conn / as sysdba;
  19. select dbid, name from v\\$database;
  20. exit;
  21. EOF`
  22. DBID=`echo $QUERYRES | awk -F' ' '{print $1}'`
  23. DBNAME=`echo $QUERYRES | awk -F' ' '{print $2}'`
  24. echo "Database ID: "$DBID
  25. echo "Database name: "$DBNAME

运行结果如下:

  1. [oracle@hxddcx02 ~]$ ./query_dbname2.sh
  2. Database ID: 811711272
  3. Database name: AUDTEST

[转]Shell脚本中获取SELECT结果值的方法的更多相关文章

  1. Shell脚本中获取select值

    最近做一个数据清理,根据行号清理,所以需要查出这个行的最大最小值出来进行删除,如果靠手动每次去查,太麻烦所以就用在sh脚本当中执行SELECT语句,并将结果赋值给一个变量. sh脚本如下 #! /bi ...

  2. Linux Shell脚本中获取本机ip地址方法

    ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"​ 命令解释 ...

  3. shell脚本中获取当前所在目录地址

    shell脚本中获取当前所在目录如下 #!/bin/bash work_path=$() cd ${work_path} work_path=$(pwd) cd ${work_path}/src

  4. Shell脚本中判断输入参数个数的方法投稿:junjie 字体:[增加 减小] 类型:转载

    Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载   这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数 ...

  5. linux,shell脚本中获取脚本的名字,使用脚本的名字。

    需求描述: 写shell脚本的过程中,有时会需要获取脚本的名字,比如,有的时候,脚本 中会有usage()这种函数,可能就会用到脚本的名字. 实现方法: shell脚本中,通过使用$0就可以获取到脚本 ...

  6. 如何在shell脚本中获取当前用户名?

    答:使用环境变量USER即可 如在脚本中打印当前用户名; #!/bin/sh echo "user name = ${USER}"

  7. JAVA中获取文件MD5值的方法

    1 DigestUtils.md5Hex(new FileInputStream(path)); 如果你只需要使用标准的MD5,其实一行代码就够了,JAVA自带的commons-codec包就提供了获 ...

  8. shell脚本中case select 的使用

    #!/bin/bash # case echo "1.Install PHP" echo "2.Install Mysql" echo "3.Inst ...

  9. shell脚本中获取本机ip地址的方法

    ipaddr='172.0.0.1' ipaddr=$(ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/ ...

随机推荐

  1. LOL电影天堂下载攻略

      LOL电影天堂&&飘花电影网下载攻略 CreateTime--2017年7月27日08:52:29Author:Marydon 以进击的巨人为例 下载地址:http://www.l ...

  2. [odroid-pc] ubuntu12.04 64bit Android4.0.3 源码编译报错及解决的方法

    第一个错误:         host Executable: cmu2nuance (out/host/linux-x86/obj/EXECUTABLES/cmu2nuance_intermedia ...

  3. 恢复阿里云RDS云数据库MySQL的备份文件到自建数据库

    云数据库MySQL版使用开源软件Percona Xtrabackup对数据库进行备份,所以您可以使用该软件将云数据库MySQL的备份文件恢复到自建数据库中,本文将介绍详细的操作步骤. 关于云数据库My ...

  4. IntelliJ IDEA类头注释和方法注释

    The template is editable. Along with static text, code and comments, you can also use predefined var ...

  5. 如何让iOS模拟器也能测试蓝牙4.0程序?

    买一个CSR蓝牙4.0 USB适配器,插在Mac上 在终端输入sudo nvram bluetoothHostControllerSwitchBehavior="never" 重启 ...

  6. [Jobdu] 题目1544:数字序列区间最小值

    题目描述: 给定一个数字序列,查询任意给定区间内数字的最小值. 输入: 输入包含多组测试用例,每组测试用例的开头为一个整数n(1<=n<=100000),代表数字序列的长度.接下去一行给出 ...

  7. 编译器DIY——读文件

    编译器的前端词法分析:将源文件解析成一个个的单词流.为语法分析做准备. 在词法分析阶段,我们要做的就是将词分出来,而且确定单词的类型,一般的程序设计语言的单词符号能够份为下面5种: 1.keyword ...

  8. Python3中使用HTMLTestRunner报No module named 'StringIO'解决方法

    今天在学习使用HTMLTestRunner生成测试报告时遇到一个报错,如图所示: 网上搜索了下“No module named 'StringIO'”解决方法,原来我用的是Python 3.X版本,而 ...

  9. &lt;LeetCode OJ&gt; 234. Palindrome Linked List

    Total Accepted: 40445 Total Submissions: 148124 Difficulty: Easy Given a singly linked list, determi ...

  10. 记一次线上MySQL数据库死锁问题

            最近线上项目报了一个MySQL死锁(DealLock)错误,虽说对业务上是没有什么影响的,由于自己对数据库锁这块了解不是很多,之前也没怎么的在线上碰到过.这次刚好遇到了,便在此记录一下 ...