셸 프로 그래 밍 (9) --- for 순환

2106 단어 shellfor 순환
for 순환 문법 형식
형식 1:
for 变量 in 循环列表
do
    循环体
done
说明:for执行的时候,从循环列表中的第一个值开始执行循环,遍历循环列表,循环结束。

형식 2:
for ((初始值;结束条件;变化值))
do
    循环体
done

for 순환 과 생 성 목록 을 함께 사용 할 때 $(command) 또는 'command' 와 같은 명령 을 바 꿉 니 다.
목록 생 성 방법
방법 1:
{a..b}:表示的是从a到b
{a..b..c}:表示的是从a到c,并且以c为增加值(步长)

예시 1:
[root@Server3 tmp]# touch {1..3}
[root@Server3 tmp]# ls -l
total 0
-rw-r--r-- 1 root root 0 Jul  8 21:26 1
-rw-r--r-- 1 root root 0 Jul  8 21:26 2
-rw-r--r-- 1 root root 0 Jul  8 21:26 3
[root@Server3 tmp]#

예시 2:
[root@Server3 tmp]# touch {1..5..2}
[root@Server3 tmp]# ls -l
total 0
-rw-r--r-- 1 root root 0 Jul  8 21:26 1
-rw-r--r-- 1 root root 0 Jul  8 21:26 3
-rw-r--r-- 1 root root 0 Jul  8 21:26 5
[root@Server3 tmp]#

방법 2:
seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT LAST

예시 3:
[root@Server3 Menu]# seq 4
1
2
3
4
[root@Server3 Menu]# seq 1 2 5
1
3
5
[root@Server3 Menu]# seq 1 3
1
2
3
[root@Server3 Menu]#

예시 4: 1 에서 100 까지
[root@Server3 Learn]# cat for1.sh 
#!/bin/bash
declare -i sum=0
for i in $(seq 1 100)
do
#       sum=$(expr $sum + $i)
#       sum=$[$sum+$i]
#       sum=$(($sum+$i))
        let sum=$sum+$i
done
echo "$sum"
[root@Server3 Learn]# 

说明:
declare为声明一个变量的类型。如果开始的时候不使用declare -i sum=0,将sum的变量声明为整型,而是直接写成sum=0,则表示的是sum为字符串类型。
$(seq 1 100):这一块为循环列表,表示的是从1到100。也可以写成{1..100}。
do和done之间的循环体表示的都是计算数值相加的不同方法,结果都是一样的。

예시 5:
[root@Server3 Learn]# cat for2.sh 
#!/bin/bash
for i in $(cat /etc/passwd | cut -d: -f1)
do
        echo "Hello $i"
done
[root@Server3 Learn]#

예시 6:
[root@Server3 Learn]# cat for2.sh
#!/bin/bash
line=$(wc -l /etc/passwd | awk '{print $1}')
for i in $(seq 1 $line)
do
        echo "Hello `head -n $i /etc/passwd | tail -n 1 | cut -d: -f1`, your shell is $(head -n $i /etc/passwd | tail -n 1 | cut -d: -f7)"
done
[root@Server3 Learn]#

좋은 웹페이지 즐겨찾기