Shell的For循环语句

Zss 发表于:

For循环

首先说一下for的无限循环使用:

#!/bin/bash
for (( ; ; ))
do
   echo "infinite loops [ hit CTRL+C to stop]"
done

python也是比较类似的,可以理解成这个迭代器表示方式不一样使用的是{1..10}

for 变量 in 列表;do
   执行的命令
   ...
done

例如:一个十次的循环,{1..10} 可以理解成1到10的一个列表,相当于每次赋值给 i,循环十次,若为{1..10..2}相当生成了一个1到10 步长为2的列表为1,3,5,7,9

#!/bin/sh
for i in {1..10};do
    echo ${i}
    sleep 0.5
done

或者将这个列表直接用不同的常量代替,

for 变量 in 常量1 常量2 常量3;do
   执行的命令
   ...
done
#!/bin/sh
for i in 'z' s d 5 5 1 4 ;do  #这里加不加''效果一样
    echo ${i}
    sleep 0.5
done

在或者使用命令生成如: `seq 1 100`   生成一个1到100的列表来循环

#!/bin/sh
sum=0
for i in `seq 1 100`
  do
  echo $i
  done

或者在for 后面直接写条件

for ((expr1;expr2;expr3))
  do
    command...
  done

expr1:定义一个变量并且给初始值
expr2:根据某个条件决定循环的次数
expr3:变量以什么样的方式去改变
for((i=1;i<=10;i++));  
do   
echo $(expr $i \* 3 + 1);  
done

或者直接使用命令所获取到的信息来依次赋值给 i ,使用命令的方式是英文状态下的esc下面的这个键  字符为 ` ,所以命令就是 ` cd /home/shell&&ls `

这样子会获取到home目录下的shell目录中所有的文件名赋值给 i

#!/bin/sh
for i in `cd /home/shell&&ls`;
do
echo $i is file name\! ;
done

输出:
for.sh is file name!
if.sh is file name!
macth.sh is file name!
while.sh is file name!
xunhuan.sh is file name!

几个循环的控制和pyhton中一致,循环控制:

continue:重新开始下一次循环,继续。

break:打断,马上停止此次循环,执行循环体外的代码

exit:退出,退出循环

列表的循环方式:

for i in {1..10};do echo $i;done
for i in;do echo $i;done 1 2 3 
for ((i=1;i<=50;i++));do echo $i;done
for ((i=50;i<=100;i++));do echo $i;done
for i in {50..100};do echo $i;done
for i in {1..100..2};do echo $i;done
for i in {0..100..2};do echo $i;done
for i in {0..100..3};do echo $i;done
for i in {100..50..5};do echo $i;done
for i in `seq 10`;do echo $i;done
for i in $(seq 10);do echo $i;done
for i in $(seq 1 2 10);do echo $i;done
for ((i=1;i<=10;i+=2));do echo $i;done
for (( ; ; ))do echo $i;done 无限循环