bash shell 中主要提供了三種循環(huán):for,while,until
for 循環(huán)
for 循環(huán)的運(yùn)作方式是將串行的元素取出, 依次放入指定的變量中, 然后重復(fù)執(zhí)行在 do 和 done 之間的命令, 知道所有元素取盡為止.其中, 串行是一些字符串的組合, 彼此使用 $IFS 所定義的分隔符 (如空格符) 隔開(kāi), 這些字符串成為為字段.
語(yǔ)法:
for 變量 in 串行 // 將串行中的字段迭代放入變量中
do
執(zhí)行命令 // 重復(fù)執(zhí)行, 知道串行中的每一個(gè)字段處理過(guò)為止.
done
案例:用 for 循環(huán)在 tmp 目錄下創(chuàng)建 aaa1-aaa10,然后在 aaa1-aaa10 創(chuàng)建 bbb1-bbb10 的目錄
\#!/bin/bash
mkdir hahaha
for k in $(seq 1 10)
do
mkdir /tmp/hahaha/aaa${k}
cd /tmp/hahaha/aaa${k}
for j in $(seq 1 10)
do
mkdir bbb${j}
cd /tmp/hahaha/aaa${k}
done
cd ..
done
說(shuō)明:
案例二:列出 var 目錄下各子目錄占用磁盤空間的大小。
\#!/bin/bash
dir="/var"
cd $dir
for k in $(ls $dir)
do
if [-d $k]
then
du -sh $k
fi
done
說(shuō)明:
while 循環(huán)
語(yǔ)法:
while 條件測(cè)試
do
執(zhí)行命令
done
說(shuō)明:
案例:求 1 到 100 的和
\#!/bin/bash
sum=0
i=1
while ["$i" -le "100"]
do
sum=$(($sum+$i))
i=$(($i+1))
done
echo "sum(1-100):" $sum
until 循環(huán)
語(yǔ)法:
until 條件測(cè)試
do
執(zhí)行命令
done
說(shuō)明:
案例:計(jì)算 1-100 的和
\#!/bin/bash
sum=0
i=1
until ((i>100))
do
sum=$(($sum+$i))
i=$(($i+1))
done
echo $sum
分析:只要條件測(cè)試未超過(guò) 100,就進(jìn)入循環(huán),其他的和 while 類似。
其實(shí) for 循環(huán)還有一種方式:
for((初始值; 條件; 執(zhí)行步長(zhǎng)))
do 程序段
done
注意細(xì)節(jié):for((初始值; 條件; 執(zhí)行步長(zhǎng))) 里面的預(yù)壓和 c 語(yǔ)言一樣了,但是一點(diǎn)不同雙括號(hào)。
for 循環(huán)案例:列出指定目錄下的所有文件
\#!bin/bash
read -p "Please enter the dir name:" dirname
for file in $(ls $dirname)
do
echo $file
done
復(fù)習(xí)一下 seq 命令
seq 選項(xiàng) 參數(shù)
主要選項(xiàng):
-s
指定分隔符,默認(rèn)是換行-w
等位補(bǔ)全,就是寬度相等,不足的前面補(bǔ) 0-f
格式化輸出,就是指定打印的格式案例:
使用命令:seq 2
輸出:
1
2
使用: seq -s “--” 2
輸出 :1--2
案例:
[root@localhost tmp]# seq -f %05g 1 10
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010