1. 程式人生 > 實用技巧 >SHELL使用--for迴圈語句

SHELL使用--for迴圈語句

目錄

for迴圈

for迴圈語法

# 語法(shell特徵:根據值進行迴圈)
for i in 值1 值2 值3
do
    echo $i
done

示例一:固定值迴圈

[root@egon day05]# cat 7.sh 
#!/bin/bash
for i in "aaa" 222 "ccc"
do
    echo $i
done

示例二:執行結果迴圈

# 將目錄中的檔案作為執行條件,迴圈進行改名
[root@egon day05]# cat 8.sh 
#!/bin/bash
for i in `ls /scripts/day05`
do
    mv $i ${i/txt/sh}
done

示例三:數值迴圈

# 這裡將1-5的值都進行了迴圈,然後依次顯示
#!/bin/bash
for i in {5..1}
do
   echo $i
done

for i in {a..z}
do
   echo $i
done

示例四:ip檢測

# 將範圍內所有的值進行迴圈,值有多少就迴圈多少次
#!/bin/bash
for i in {1..254}
do
    ping -c1 10.0.0.$i &>/dev/null
    [ $? -eq 0 ] && echo 10.0.0.$i
done

示例五:結合break和continue

# 使用結果和while一致,當使用continue時,將當前迴圈結束,不執行迴圈下方指令,但使用break將直接結束本層迴圈,也就直接退出,只會有AB兩個結果
[root@egon day05]# cat 9.sh 
#!/bin/bash
for i in {A..Z}
do
   if [ $i == "C" ];then
     # break
     continue
   fi
   echo $i
done

案例六:統計資料夾下所有檔案型別

# 對傳入引數中的檔案或目錄進行判斷,統計檔案或其他檔案型別數量

#!/bin/bash
[ $# -ne 1 ] && echo "必須傳入一個引數" && exit

regular=0
dir=0
link=0
other=0
for fname in `ls $1`
do
	if [ -L "$1/$fname" ];then
    	let link++
    elif [ -f "$1/$fname" ];then
        let regular++
    elif [ -d "$1/$fname" ];then
    	let dir++
    else
         let other++
    fi
done
echo "標準檔案個數:$regular"
echo "目錄檔案個數:$dir"
echo "軟連線檔案個數:$link"
echo "其他檔案個數:$other"