for語句
基本格式:
for 變量名 in 條件; do …; done
樣例:周遊目錄或檔案
1
2
3
4
5
6
7
8
9
<code>#!/bin/bash</code>
<code>cd</code> <code>/etc/</code> <code>##腳本中如果查詢的目錄在多級目錄下,首先要進入到目錄,或者,直接跟絕對路徑</code>
<code>for</code> <code>a </code><code>in</code> <code>`</code><code>ls</code> <code>/etc/</code><code>` </code><code>##周遊目錄</code>
<code>do</code>
<code> </code><code>if</code> <code>[ -d $a ] </code><code>##一個一個的去判斷是否為目錄</code>
<code> </code><code>then</code>
<code> </code><code>ls</code> <code>-d $a </code><code>##如果是目錄,就檢視下目錄内的檔案和子目錄</code>
<code> </code><code>fi</code>
<code>done</code>
while語句
while 條件;
do … ;
done
樣例:實時監測負載發郵件
10
<code>while</code> <code>: </code><code>##:表示永遠循環,和true一個意思</code>
<code> </code><code>load=`w|</code><code>head</code> <code>-1|</code><code>awk</code> <code>-F </code><code>'load average: '</code> <code>'{print $2}'</code><code>|</code><code>cut</code> <code>-d. -f1`</code>
<code>if</code> <code>[ $load -gt 10 ]</code>
<code>then</code>
<code> </code><code>top</code><code>|mail -s </code><code>"load is high: $load"</code> <code>[email protected] </code><code>##這裡也可以執行python發郵件的腳本</code>
<code>fi</code>
<code>sleep</code> <code>30</code>
break
跳出整個循環,執行循環代碼後的指令。
continue
跳過本次循環,進行下一輪循環。
exit
退出整個腳本。
函數
function fun(){ ##定義函數
……
}
fun 1 2 3 ##傳入參數,調用函數
變量含義:
$1 : 第一個參數
$2 : 第二個參數
$3 : 第三個參數
$0 : 腳本的本身名稱
$# : 傳入的參數個數
$@ : 全部參數
樣例:檢視網卡ip位址
<code>ip() {</code>
<code> </code><code>ifconfig</code> <code>| </code><code>grep</code> <code>-A1 </code><code>"$e"</code> <code>|</code><code>tail</code> <code>-1 | </code><code>awk</code> <code>'{print $2}'</code>
<code>}</code>
<code>read</code> <code>-p </code><code>"Please input the eth name: "</code> <code>e</code>
<code>myip=`ip $e`</code>
<code>echo</code> <code>"$e address is $myip"</code>
數組
定義:
11
<code># a=(1 2 3) ##定義一個數組a并指派 1 2 3</code>
<code># echo ${a[*]} ##注意輸出a的值的格式</code>
<code>1 2 3</code>
<code># echo ${a[1]} ##輸出單個a數組中的值</code>
<code>2</code>
<code># echo ${a[2]}</code>
<code>3</code>
<code># echo ${a[0]} ##注意第一個其實是 0</code>
<code>1</code>
<code># echo ${#a[@]} ##擷取數組的元素個數</code>
更改:
<code># a[3]=a ##給第三個數組指派一個a</code>
<code># echo ${a[*]}</code>
<code>1 2 3 a</code>
<code># a[3]=aaa ##修改指派為aaa</code>
<code>1 2 3 aaa</code>
<code>#echo ${a[@]/5/asd} ##替換</code>
<code>1 2 3 4 asd 6 7 8</code>
删除:
<code># unset a[2] ##删除a數組中第2位的值</code>
<code># unset a ##删除a數組</code>
分片:
<code># a=(`seq 1 8`) ##給a指派8個數</code>
<code>1 2 3 4 5 6 7 8</code>
<code># echo ${a[@]:3:3} ##從第3個數組開始,截取3個。</code>
<code>4 5 6</code>
<code># echo ${a[@]:0-3:2} ##從倒數第三個開始,取兩個數</code>
<code>6 7</code>
<code></code>
本文轉自Grodd51CTO部落格,原文連結:http://blog.51cto.com/juispan/2064850,如需轉載請自行聯系原作者