shell基础-02 循环和语句 (if语句、for循环、while循环、case语句、循环控制)
文章目录
1. if语句
1.1 单分支
if [ 条件 ]
then
命令
fi
说明:如果满足条件,则执行命令,否则不执行该if语句。
1.2 双分支
if [ 条件 ]
then
命令1
else
命令2
fi
如果满足条件,则执行命令1,否则执行命令2。
1.3 多分支
if [ 条件1 ]
then
命令1
elif [ 条件2 ]
命令2
……
else
命令n
fi
- 如果满足条件1,则执行命令1;如果满足条件2,则执行命令2;否则执行命令n。
elif
可以写多个
2. for循环
2.1 shell风格
2.1.1 语法
for 变量名 in 列表
do
循环体
done
in
后边写一个列表即可,不必加括号、引号之类。方法如下:
2.1.2 直接列出列表内容
for i in 1 2 3
或
for i in [1,2,3]
2.1.3 连续的列表
for i in [1..10]
2.1.4 执行命令创建的列表
- 语法
for i in $(命令)
- 利用seq命令
for i in $(seq 200) #从1~200
for i in $(seq 100 200) #从100~200
- 利用cat/ls等命令
for i in $(cat 文件名)
2.2 C语言风格
for ((i=0;i<=100;i++))
do
循环体
done
2.3 命令行执行for循环
- 语法
# for 条件;do 循环体;done
说明:为了方便,可以把循环题用括号扩起来。
-
条件
shell风格和C语言风格都可用 -
示例
# for((i=0;i<=10;i++));do echo $i;done
# for i in $(seq 10);do echo $i ;done
# for i in `cat 1.txt`;do echo $i;done
2.4 awk的for循环
说明:每行打印10遍
# awk '{for(i=0;i<=10;i++){print $0}}' 1.txt
3. while循环
3.1 语法
while 条件
do
循环体
done
3.2 示例
while [ $i -gt 10 ]
while 0
4. case语句
4.1 语法
case $变量 in
"值1")
命令1-1;
命令1-2;;
"值2")
命令2;;
……
*)
命令n;;
esac
4.2 值与正则
- 值表示一个连续范围:
[1-9]
- 值表示连个其中一个:
A|B
case i in
"[1-5]")
echo 'cat';;
"6|7")
echo 'dog';;
……
*)
命令n;;
esac
5. 循环控制
-
exit
退出整个程序 -
break
结束当前循环,跳出本层循环 -
break1
跳出一层循环,break2 跳出两层循环。 -
continue
跳出本循环剩余代码 -
next
下一行