语法:for 变量名 in 条件; do …; done
案例1:计算1到100所有数字的和
#!/bin/bash
sum=0
for i in `seq 1 100`
do
sum=$[$sum+$i]
echo $i
done
echo $sum
分析上面的案例,我们先看下下面shell
#!/bin/bash
for i in `seq 1 10`
do
echo $i
done
执行这个shell,结果如下,结果是返回了1到10的值
[root@lijie-01 ~]# sh for1.sh
1
2
3
4
5
6
7
8
9
10
其实在linux中我们用的更多的是对文件做循环 案例2:文件列表循环
#!/bin/bash
cd /etc/
for a in `ls /etc/`
do
if [ -d $a ]
then
ls -d $a
fi
done
有下面一个情况需要注意,for循环时以空格或者回车作为分割符,在使用 for i in ls ./
;do echo $i;done命令里面ls ./
作为判断条件时,当文件名中有空格时,一个文件会以空格分割拆分成多个文件
[root@lijie-01 shell]# vim for2.sh
[root@lijie-01 shell]# touch 1 2
[root@lijie-01 shell]# touch 3\ 4.txt
[root@lijie-01 shell]# ll
总用量 44
-rw-r--r-- 1 root root 0 4月 20 06:24 1
-rw-r--r-- 1 root root 0 4月 20 06:24 2
-rw-r--r-- 1 root root 0 4月 20 06:24 3 4.txt
[root@lijie-01 shell]# ls 3
ls: 无法访问3: 没有那个文件或目录
[root@lijie-01 shell]# for i in `ls ./`;do echo $i;done //这里循环出来3 4.txt这个文件被拆分为两个文件了
1
2
3
4.txt
以上,因此我们以后在使用 for i in ls ./
;do echo $i;done命令里面ls ./
这种类型的判断条件时,需要注意空格或者回车键