Shell中的for和while循環(huán)詳細總結(jié)

字號:


    這篇文章主要介紹了Shell中的for和while循環(huán)詳細總結(jié),本文講解了for循環(huán)的數(shù)字段形式、詳細列出、對文件進行循環(huán),while循環(huán)的三種使用場合等內(nèi)容,需要的朋友可以參考下
    一、for循環(huán)
    1.數(shù)字段形式
    代碼如下:
    for i in {1..10}
    do
    echo $i
    done
    2.詳細列出(字符且項數(shù)不多)
    代碼如下:
    for File in 1 2 3 4 5
    do
    echo $File
    done
    3.對存在的文件進行循環(huán)
    復(fù)制代碼 代碼如下:
    for shname in `ls *.sh`
    do
    name=`echo "$shname" | awk -F. '{print $1}'`
    echo $name
    done
    4.查找循環(huán)(ls數(shù)據(jù)量太大的時候也可以用這種方法)
    代碼如下:
    for shname in `find . -type f -name "*.sh"`
    do
    name=`echo "$shname" | awk -F/ '{print $2}'`
    echo $name
    done
    5.((語法循環(huán)--有點像C語法,但記得雙括號
    代碼如下:
    for((i=1;i<100;i++))
    do
    if((i%3==0))
    then
    echo $i
    continue
    fi
    done
    6.seq形式 起始從1開始
    代碼如下:
    for i in `seq 100`
    do
    if((i%3==0))
    then
    echo $i
    continue
    fi
    done
    二、while循環(huán)
    1.while循環(huán)注意為方括號[],且注意空格
    代碼如下:
    min=1
    max=100
    while [ $min -le $max ]
    do
    echo $min
    min=`expr $min + 1`
    done
    2.雙括號形式,內(nèi)部結(jié)構(gòu)有點像C的語法,注意賦值:i=$(($i+1))
    代碼如下:
    i=1
    while(($i<100))
    do
    if(($i%4==0))
    then
    echo $i
    fi
    i=$(($i+1))
    done
    3.從配置文件讀取,并可以控制進程數(shù)量
    代碼如下:
    MAX_RUN_NUM=8
    cat cfg/res_card_partition.cfg |grep -v '^$'|grep -v "#" | grep -v grep |while read partition
    do
    nohup sh inv_res_card_process.sh $partition >log/resCard$partition.log 2>&1 &
    while [ 1 -eq 1 ]
    do
    psNum=`ps -ef | grep "inv_res_card_process" | grep -v "grep" | wc -l`
    if [ $psNum -ge $MAX_RUN_NUM ]
    then
    sleep 5
    else
    break
    fi
    done
    done
    三.循環(huán)控制語句
    代碼如下:
    # break 命令不執(zhí)行當前循環(huán)體內(nèi)break下面的語句從當前循環(huán)退出.
    # continue 命令是程序在本循體內(nèi)忽略下面的語句,從循環(huán)頭開始執(zhí)行