Shell基礎語法(三)
阿新 • • 發佈:2018-01-25
數組 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基礎語法(三)