1. 程式人生 > >Shell基礎語法(三)

Shell基礎語法(三)

數組 head p地址 abcd 地址 bcd input seq 網卡ip

for語句

基本格式:

for 變量名 in 條件; do …; done


樣例:遍歷目錄或文件

#!/bin/bash
cd /etc/                 ##腳本中如果查詢的目錄在多級目錄下,首先要進入到目錄,或者,直接跟絕對路徑
for a in `ls /etc/`      ##遍歷目錄
do
    if [ -d $a ]         ##一個一個的去判斷是否為目錄
    then
    ls -d $a             ##如果是目錄,就查看下目錄內的文件和子目錄
    fi
done


while語句

基本格式:

while 條件;

do … ;

done


樣例:實時監測負載發郵件

#!/bin/bash
while :         ##:表示永遠循環,和true一個意思
do
    load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`
if [ $load -gt 10 ]
then
    top|mail -s "load is high: $load" [email protected]  ##這裏也可以執行python發郵件的腳本
fi
sleep 30
done


break

跳出整個循環,執行循環代碼後的指令。


continue

跳過本次循環,進行下一輪循環。


exit

退出整個腳本。


函數

基本格式:

function fun(){ ##定義函數

……

}

fun 1 2 3 ##傳入參數,調用函數


變量含義:

$1 : 第一個參數

$2 : 第二個參數

$3 : 第三個參數

$0 : 腳本的本身名稱

$# : 傳入的參數個數

$@ : 全部參數


樣例:查看網卡ip地址

#!/bin/bash
ip() {
	ifconfig | grep -A1 "$e" |tail -1 | awk '{print $2}'
}
read -p "Please input the eth name: " e
myip=`ip $e`
echo "$e address is $myip"


數組

定義:

# a=(1 2 3)          ##定義一個數組a並賦值 1 2 3
# echo ${a[*]}       ##註意輸出a的值的格式
1 2 3
# echo ${a[1]}       ##輸出單個a數組中的值
2
# echo ${a[2]}
3
# echo ${a[0]}       ##註意第一個其實是 0
1
# echo ${#a[@]}      ##獲取數組的元素個數
3

更改:

# a[3]=a         ##給第三個數組賦值一個a
# echo ${a[*]}
1 2 3 a
# a[3]=aaa       ##修改賦值為aaa
# echo ${a[*]}
1 2 3 aaa
#echo ${a[@]/5/asd}  ##替換
1 2 3 4 asd 6 7 8

刪除:

# unset a[2]         ##刪除a數組中第2位的值
# unset a            ##刪除a數組

分片:

# a=(`seq 1 8`)          ##給a賦值8個數
# echo ${a[*]}
1 2 3 4 5 6 7 8
# echo ${a[@]:3:3}       ##從第3個數組開始,截取3個。
4 5 6
# echo ${a[@]:0-3:2}     ##從倒數第三個開始,取兩個數
6 7

Shell基礎語法(三)