Linux進階:SHELL腳本編程進階

shell 腳本編程進階

流程控制shell


過程式編程語言
    順序執行
    選着執行
    循環執行

條件選擇if語句編程


選擇執行
注意:if語句可嵌套
單分支
    if判斷條;then
        條件爲真的分支代碼
    fi
雙分支:
    if判斷條件;then
        條件爲真的分支的代碼 
    else
        條件爲假的分支代碼
    fi

if語句centos


多分支
     if 判斷條件1; then
          條件1爲真的分支代碼
    elif 判斷條件2; then
         條件2爲真的分支代碼
     elif 判斷條件3; then
         條件3爲真的分支代碼
    else
        以上條件都爲假的分支代碼
    fi
逐條件進行判斷,第一次遇爲「真」條件時,執行其分支,然後結束整個if語句

if示例bash


根據命令的退出狀態來執行命令
if ping -c1 -W2 station1 &> /dev/null; then
    echo 'Station1 is UP'
elif grep "station1" ~/maintenance.txt &> /dev/null; then
    echo 'Station1 is undergoing maintenance‘
else
    echo 'Station1 is unexpectedly DOWN!'
    exit 1
fi

條件判斷:case語句編程語言


case 變量引用 in
PAT1)
分支1
;;
PAT2)
分支2
;;
...
*)
默認分支
;;
esac

case支持glob風格的通配符:
*: 任意長度任意字符
?: 任意單個字符
[]:指定範圍內的任意單個字符
a|b: a或b

循環ide


循環執行
    將某代碼段重複運行屢次
    重複運行多少次
        循環次數事先已知
        循環次數事先未知
    有進入條件和退出條件
for, while, until

for循環測試


for 變量名 in 列表;do
     循環體
 done

 for i[i表明變量名] in {1..10};【in後面跟的是列表】do userdel -r user$i; done 【do和done中間的是循環體】

執行機制:
    依次將列表中的元素賦值給「變量名」; 每次賦值後即執行一次循環體; 直
    到列表中的元素耗盡,循環結束  

    例:[root@centos18:11:44bin]#sum=0; for num in 1 23 4 6 4;do sum=$[sum+num]; done; echo sum=$sum
    sum=38
    [root@centos18:12:58bin]#for num in 1 23 4 6 4;do echo "num=$num";done
    num=1
    num=23
    num=4
    num=6
    num=4
    [root@centos18:13:24bin]#sum=0; for num in {1..100};do sum=$[sum+num]; done; echo sum=$sum
    sum=5050
    [root@centos18:16:24bin]#sum=0; for num in `seq 10`;do sum=$[sum+num]; done; echo sum=$sum
    sum=55
    [root@centos18:16:47bin]#sum=0; for num in {1..100..2};do sum=$[sum+num]; done; echo sum=$sum
    sum=2500

    例:算出1到100 和
    [root@centos18:27:29bin]#sum=0; for i in {1..100};do sum=$[sum+i];done;echo sum=$sum
        sum=5050
    [root@centos18:27:44bin]#sum=0; for i in `seq 1 2 100`;do sum=$[sum+i];done;echo sum=$sum
    sum=2500

for循環code

列表生成方式:
(1) 直接給出列表
(2) 整數列表:
    (a) {start..end}
    (b) $(seq [start [step]] end)
(3) 返回列表的命令
    $(COMMAND)
(4) 使用glob,如:*.sh
(5) 變量引用;
   $@, $*

while 循環it


while CONDITION; do
        循環體
 done
CONDITION:循環控制條件;進入循環以前,先作一次判斷;每一次循環以後
會再次作判斷;條件爲「true」,則執行一次循環;直到條件測試狀態爲
「false」終止循環
所以:CONDTION通常應該有循環控制變量;而此變量的值會在循環體不斷地

進入條件:CONDITION爲true
退出條件:CONDITION爲false

until循環io


until CONDITION; do
        循環體
done

進入條件: CONDITION 爲false
退出條件: CONDITION 爲true

循環控制語句continue


用於循環體中
continue [N]:提早結束第N層的本輪循環,而直接進入下一輪判斷;最內層爲
第1層
 while CONDTIITON1; do
CMD1
...
if CONDITION2; then
continue
fi
CMDn
...
 done

循環控制語句break


用於循環體中
break [N]:提早結束第N層循環,最內層爲第1層
 while CONDTIITON1; do
CMD1
...
if CONDITION2; then
break
fi
CMDn
...
 done

循環控制shift命令


shift [n]
用於將參量列表 list 左移指定次數,缺省爲左移一次。
參量列表 list 一旦被移動,最左端的那個參數就從列表中刪除。while 循環遍
歷位置參量列表時,經常使用到 shift
./doit.sh a b c d e f g h
./shfit.sh a b c d e f g h

示例:doit.sh


#!/bin/bash
# Name: doit.sh
# Purpose: shift through command line arguments
# Usage: doit.sh [args]
while [ $# -gt 0 ] # or (( $# > 0 ))
do
 echo $*
 shift
done

示例:shift.sh
#!/bin/bash
#step through all the positional parameters
until [ -z "$1" ]
do
 echo "$1"
 shift
done
echo

建立無限循環


while true; do
循環體
done

until false; do
循環體
Done
相關文章
相關標籤/搜索