[轉]Shell指令碼中擷取SELECT結果值的方法

來源:互聯網
上載者:User

標籤:

有時候我們可能會需要在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. [[email protected] ~]$ ./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. [[email protected] ~]$ ./query_dbname2.sh
    2. Database ID: 811711272
    3. Database name: AUDTEST

[轉]Shell指令碼中擷取SELECT結果值的方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.