一、for循环
用于已知循环次数的场景
1、基本格式
for 变量名称(注意是名称不是变量$等) [ in 名称范围 ] (可以不写)
do
执行内容 若满足循环则做什么动作
done for循环结束标志
举例:
vim a.sh #创建脚本a.sh
脚本内容:
#!/bin/bash
for i in {1..5} #for循环10次,第一次i=1,第二次i=2以此类推直到i=5
do
echo "$i" #循环动作,每次输出$i
done #for语句结束标志
bash a.sh #调用shell执行脚本a.sh
执行结果:
1
2
3
4
5
、类C语言格式
for (( 表达式1 ;表达式2;表达式3 ))
do
执行内容 若满足循环则做什么动作
done for循环结束标志
表达式1:定义变量并赋值
表达式2:决定是否循环
表达式3:决定循环变量如何改变,决定循环什么时候结束
举例:
vim a.sh
脚本内容:
#!/bin/bash
for(( i=0;i<=5;i++ )) #定义for循环i变量初始值为0,循环条件i小于等于5,每循环一次i自加1
do
echo "$i" #for循环每循环一次执行一次输出$i
done #for语句结束标志
bash a.sh #调用shell执行脚本
输出结果:
0
1
2
3
4
5
shell中读取文本文件中的内容做变量
并使用空格或换行符分隔每一行。for循环将字符串中的每一行读取到一数组中
[root@hadoop01 ~]# more test.txt
1
0
2
[root@hadoop01 ~]# more test.sh
#!/bin/bash
for line in `cat test.txt`
do
echo ${line}
done
[root@hadoop01 ~]#
[root@hadoop01 ~]# sh test.sh
1
0
2
[root@hadoop01 ~]#
补充
shell中的单引号和双引号的区别
结论:单引号中的字符串不会做任何处理
双引号中的字符串会做处理,如处理转义字符(\n)
[root@hadoop01 ~]# var1="\\n" #使用双引号
[root@hadoop01 ~]# var2='\\n' #使用单引号
[root@hadoop01 ~]# echo ${var1}
\n #处理了转义
[root@hadoop01 ~]# echo ${var2}
\\n #没有处理转义
[root@hadoop01 ~]#
即,如果希望字符串不做任何编号,则使用单引号即可。
shell中的变量加大括号和不加的区别
[root@hadoop01 ~]# var1='\\n'
[root@hadoop01 ~]# echo $var1vv
#注意,此处输出为空
[root@hadoop01 ~]# echo ${var1}vv
\\nvv #此处才是字符串进行了拼接
[root@hadoop01 ~]#
Linux系统Shell脚本第三章:for、while循环及脚本实操_linux脚本for循环_asddASD323432的博客-CSDN博客