隨筆-314  評(píng)論-209  文章-0  trackbacks-0
          測(cè)試平臺(tái):RHEL4.5

          一、最簡(jiǎn)單的shell里調(diào)用sqlplus.


          $ vi test1.sh

          #!/bin/bash
          sqlplus -S /nolog > result.log <<EOF
          set heading off feedback off pagesize 0 verify off echo off
          conn u_test/iamwangnc
          select * from tab;
          exit
          EOF

          $ chmod +x test1.sh
          $ ./test1.sh

          二、把sqlplus執(zhí)行結(jié)果傳遞給shell方法一

          注意sqlplus段使用老板鍵`了, 賦變量的等號(hào)兩側(cè)不能有空格.

          $ vi test2.sh

          #!/bin/bash
          VALUE=`sqlplus -S /nolog <<EOF
          set heading off feedback off pagesize 0 verify off echo off numwidth 4
          conn u_test/iamwangnc
          select count(*) from tab;
          exit
          EOF`
          if [ "$VALUE" -gt 0 ]; then
                  echo "The number of rows is $VALUE."
                  exit 0
          else
                  echo "There is no row in the table."
          fi

          $ chmod +x test2.sh
          $ ./test2.sh

          三、把sqlplus執(zhí)行結(jié)果傳遞給shell方法二

          注意sqlplus段使用 col .. new_value .. 定義了變量并帶參數(shù)exit, 然后自動(dòng)賦給了shell的$?

          $ vi test3.sh

          #!/bin/bash
          sqlplus -S /nolog > result.log <<EOF
          set heading off feedback off pagesize 0 verify off echo off numwidth 4
          conn u_test/iamwangnc
          col coun new_value v_coun
          select count(*) coun from tab;
          exit v_coun
          EOF
          VALUE="$?"
          echo "The number of rows is $VALUE."

          $ chmod +x test3.sh
          $ ./test3.sh

          四、把shell程序參數(shù)傳遞給sqlplus

          $1表示第一個(gè)參數(shù), sqlplus里可以直接使用, 賦變量的等號(hào)兩側(cè)不能有空格不能有空格.

          $ vi test4.sh

          #!/bin/bash
          NAME="$1"
          sqlplus -S u_test/iamwangnc <<EOF
          select * from tab where tname = upper('$NAME');
          exit
          EOF

          $ chmod +x test4.sh
          $ ./test4.sh ttt

          五、為了安全要求每次執(zhí)行shell都手工輸入密碼

          $ vi test5.sh

          #!/bin/bash
          echo -n "Enter password for u_test:"
          read PASSWD
          sqlplus -S /nolog <<EOF
          conn u_test/$PASSWD
          select * from tab;
          exit
          EOF

          $ chmod +x test5.sh
          $ ./test5.sh

          六、為了安全從文件讀取密碼

          對(duì)密碼文件設(shè)置權(quán)限, 只有用戶自己才能讀寫.

          $ echo 'iamwangnc' > u_test.txt
          $ chmod g-rwx,o-rwx u_test.txt
          $ vi test6.sh

          #!/bin/bash
          PASSWD=`cat u_test.txt`
          sqlplus -S /nolog <<EOF
          conn u_test/$PASSWD
          select * from tab;
          exit
          EOF

          $ chmod +x test6.sh
          $ ./test6.sh

          --End--
          posted on 2010-04-01 12:05 xzc 閱讀(4794) 評(píng)論(0)  編輯  收藏 所屬分類: Oraclelinux/unix
          主站蜘蛛池模板: 龙泉市| 宝清县| 北票市| 油尖旺区| 马关县| 桑日县| 左贡县| 阿坝县| 安溪县| 万全县| 资阳市| 无棣县| 湟源县| 兰考县| 通州区| 济宁市| 明水县| 太保市| 上栗县| 台山市| 达日县| 抚顺县| 鄂州市| 凉城县| 天柱县| 丹凤县| 车致| 遂宁市| 任丘市| 德惠市| 尤溪县| 萍乡市| 东宁县| 新泰市| 黔江区| 淄博市| 固镇县| 灵丘县| 阿合奇县| 沁阳市| 克山县|