Oracle の検索結果をシェル変数として利用する方法
10年くらい前に日次バッチなどで重宝した Oracle の Select 結果を『`』(バッククォート)で括って、シェル変数に代入する方法です。『<< EOF』まで SQL*Plus 内部で実行され、その結果が SYSDATE 変数に代入されます。
# この機能の正式名称って知らないんですが・・・(汗)
余計な結果が入らないように SQL*Plus をサイレントモード(-s)で起動し、SQL*Plus 内部の各種表示も Off にしています。気をつけないといけない点として、csh と ksh では閉じる側の『`』の位置が違うところですね。
これを応用すると面倒な月末日の取得処理で Oracle 側の ADD_MONTHS 関数や LAST_DAY 関数が利用できてかなり便利です。(^o^)/
- csh の場合
#!/bin/csh set SYSDATE=`sqlplus -s system/manager` << EOF set feedback off; set echo off; set flush off; set head off; select sysdate from dual; EOF echo $SYSDATE exit 0
- ksh の場合
#!/bin/ksh SYSDATE=`sqlplus -s system/manager << EOF set feedback off; set echo off; set flush off; set head off; select sysdate from dual; EOF` echo $SYSDATE exit 0
コマンドラインエディット機能を有効にする方法
もしシェルの設定でコマンドラインエディット機能が有効になっていないようでしたら、以下のコマンドを実行すると操作性がとてつもなく向上します。私はこの機能が有るから Windows 上でも Cygwin が手放せないと言っても過言では有りません。(^o^)v
- tcshの場合
bindkey -v (viキーバインドで操作可能) bindkey -e (emacsキーバインドで操作可能)
- bashの場合
set -o vi (viキーバインドで操作可能) set -o emacs (emacsキーバインドで操作可能)
- kshの場合
set -o vi (viキーバインドで操作可能) set -o emacs (emacsキーバインドで操作可能)
- zshの場合
bindkey -v (viキーバインドで操作可能) set -o vi (viキーバインドで操作可能) bindkey -e (emacsキーバインドで操作可能) set -o emacs (emacsキーバインドで操作可能)
vi キーバインド系の操作を開始するためには、一度、Esc キーを押す必要が有ります。カーソル移動は「h」「j」「k」「l」キーで可能で、他にも vi の移動手段/検索/コピー&ペーストなどが利用できるようになります。
emacs キーバインド系の操作は、「Ctl + p」で上、「Ctl + n」で下、「Ctl + b」で左、「Ctl + f」で右へカーソルを移動することが可能です。他にもいろいろと有ると思いますが、私は vi 派なので詳細は不明です。(^^;