戀上shell程式設計
最近有點迷戀shell了。呵呵,不過我也只是皮毛,就把我的所知寫在這裡吧。
附上晶晶小妹的一段shell,慢慢品位吧~~
0 #!/bin/bash
1 # 指令碼名:mystat 用途:收集vmstat 資料到my_os_stat 表中
2 # 命令格式: ./mystat 間隔時間 次數
3 # 省略次數,將會無限制執行。 省略間隔時間,將使用預設時間300 秒(即5 分鐘)
4 i=1
5 k="$1"
6 j="$2"
7 if [ -z "$1" ]
8 then
9 k=300
10 fi
11 if [ -z "$2" ]
12 then
13 j=2
14 fi
15 while (( i <= j ))
16 do
17 vmstat $k 2|sed 1,3d|tr -s " "|{
18 read a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16;
19 sqlplus scott/password << EOF
20 insert into my_os_stat values(sysdate,$a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,
21 $a10,$a11,$a12,$a13,$a14,$a15,$a16);
22 commit;
23 exit
24 EOF
25 # 注意,在上面的迴圈內,EOF 前不可以有空格。
26 }
27 if [ -n "$2" ]
28 then
29 let i=i+1
30 fi
31 done
我在研究此段程式碼的時候,對if 裡的-z和-n,困惑了很久,經過不懈努力終於解開謎團。
第7和11行,-z是判斷是否為空值,如果為空,執行then
第27行,-n是判斷是否有值,如果有值,執行then
雖然-z和-n意思相近,不過很容易混淆,我就在這栽了跟斗。
注意:
1. "|"代表"管道",即不將vmstat 的結果傳送的螢幕上,而是傳遞給後面的命令處理。
2. sed 1,3d 的作用,是將vmstat 傳遞過來的結果進行處理,刪除1 至3 行。d 的意思是刪除,1,3 是刪除1 至3 行。
3. 接下來,結果會被透過管道,傳遞給tr -s " "命令,這個命令的作用是將重複的空格壓縮為1 個
4. 接下來,結果將會以管道的形式,傳遞給下一個命令。下一命令是用{ }括起來的命令組合。read a1 a2 ...。a16,它從管道的前一個命令的輸出結果中,以空格為間隔,依次讀出每一個數字,按順序分別賦給a1,a2 等變數。當read 從管道的一端讀出資料到變數中後,各個變數的值無法在下一命令中使用。因此,需要用一對括號{},將read 和後面的命令組合起來,這樣後面的命令就可以使用read 中的變數了。因此,我們可以暫時的將大括號中的所有命令,理解為一個整體。需要
注意的是大括號中的各命令,用“;”號間隔。
5. <
6. “$1”,“$2”它們兩個,分別代表第一與第二個命令列引數。
以上6點,需要注意。同時此段指令碼的作用應該已經很明瞭了,是按照vmstat中輸入的引數將內容處理後插入到my_os_stat中.如果vmstat引數沒有輸入或輸入不全,此段指令碼將陷入死迴圈,將持續不斷的將vmstat資訊插入到my_os_stat中。
好了,以上程式碼解析完了,留此紀念,供日後參考。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9533994/viewspace-1006093/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux Shell程式設計(4)——shell特殊字元(上)Linux程式設計字元
- shell程式設計程式設計
- Linux Shell程式設計(1)——shell程式設計簡介Linux程式設計
- Shell程式設計 --- Shell介紹程式設計
- Windows Shell 程式設計Windows程式設計
- shell程式設計(轉)程式設計
- shell程式設計二程式設計
- shell程式設計五程式設計
- Shell程式設計-shell變數1程式設計變數
- Bourne Shell及shell程式設計(轉)程式設計
- 史上最全shell指令碼程式設計語法上冊指令碼程式設計
- 一個程式設計師的愛戀 (轉)程式設計師
- Shell程式設計-02-Shell變數程式設計變數
- Linux Shell程式設計(27)——子shellLinux程式設計
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- 初識shell程式設計程式設計
- Shell 程式設計入門程式設計
- shell程式設計進階程式設計
- shell程式設計入門程式設計
- Shell程式設計-基礎程式設計
- shell併發程式設計程式設計
- linux shell 程式設計Linux程式設計
- linux shell程式設計Linux程式設計
- Oracle-SHELL程式設計Oracle程式設計
- shell程式設計簡介程式設計
- shell vbscript xml程式設計XML程式設計
- shell 程式設計簡記程式設計
- shell程式設計基礎程式設計
- Shell程式設計-11-子Shell和Shell巢狀程式設計巢狀
- Linux Shell程式設計(2)——第一個shell程式Linux程式設計
- LINUX Shell指令碼程式設計例項詳解(一)上Linux指令碼程式設計
- Shell 指令碼程式設計陷阱指令碼程式設計
- shell程式設計基礎二程式設計
- Linux之shell程式設計Linux程式設計
- shell程式設計–bash變數程式設計變數
- shell程式設計—簡介(一)程式設計
- csh shell程式設計入門程式設計
- Shell程式設計——極簡教程程式設計