一、语法

for循环和while类似,常用于执行有限次数的循环,有两种语法结构,

1.变量列表循环

  • 语法:
for 变量名 in 变量取值列表
do
	指令......
done

变量取值列表中的值,要用空格隔开

说明:
依次获取“变量取值列表”中的值赋值给“变量名”,然后执行“指令”,再重复,直到列表中的所有值都执行过一次后,结束循环

2.C语言结构循环

for((exp1;exp2;exp3))
do
	指令......
done

三个表达式用分号隔开

说明:
小括号内是三个表达式,典型样式为((i=1;i<10;i++)),按顺序分别是变量初始化值,变量范围,变量自增或自减,当第一个表达式的i值符合第二个表达式的范围时,执行循环,然后对i值+1,符合范围要求再循环,直到i值不满足条件时,跳出循环

二、简单示例

1.按序打印数字

1) 变量列表循环结构:

  • 脚本
for n in 1 2 3 4
do
	echo $n
done
  • 执行结果

1
2
3
4

2)C语言循环结构

  • 脚本
for((i=1;i<4;i++))
do
  echo $i
done
  • 执行结果

1
2
3

当i自加结果等于4后,不符合条件表达式要求,跳出循环

2.命令或传参替换取值列表

1)命令替换法

用ls命令的结果做取值列表,需要写成 `ls` 或 $(ls) 的方式

  • cat /server/scripts/for1.sh
#!/bin/sh
for file in `ls`
do
  echo $file
done
  • sh /server/scripts/for1.sh
    abcd.txt
    b.log
    ip.txt
    t.sh
    t.tx

2)省略取值列表传参

当没有in和取值列表时,其实相当于for file in $@,即接收命令行传递的所有参数

  • cat /server/scripts/for1.sh
#!/bin/sh
for file
# for file in $@
do
  echo $file
done
  • sh /server/scripts/for1.sh `ls`
    abcd.txt
    b.log
    ip.txt
    t.sh
    t.tx