shell的流程控制语句:
-
选择
-
判断
-
循环
shell的条件选择语句:if
if分为单分支、双分支和多分支
单分支格式:
if 判断条件;then
执行的操作
fi
例如:
[root@CentOS7 ~]# cat 1.sh
#!/bin/bash
NUM=1
if test $NUM -eq 1 ; then
echo NUM == 1
fi
[root@CentOS7 ~]# bash 1.sh
NUM == 1
双分支:
[root@CentOS7 ~]# cat 1.sh
#!/bin/bash
NUM=2
if test $NUM -eq 1 ; then
echo NUM == 1
else
echo NUM != 1
fi
[root@CentOS7 ~]# bash 1.sh
NUM != 1
多分支语句:
[root@CentOS7 ~]# cat 1.sh
#!/bin/bash
NUM=2
if test $NUM -eq 1 ; then
echo NUM == 1
elif test $NUM -eq 2; then
echo NUM == 2
else
echo NUM !=1
fi
[root@CentOS7 ~]# bash 1.sh
NUM == 2
条件判断语句:
case格式:
case 变量引用 in
PAT1)
执行相关操作
;;
PAT2)
执行相关操作
;;
*)
执行相关操作
;;
esac
#case语句支持通配符
* 任意长度任意字符
? 任意单个字符
[] 指定范围内的任意单个字符
| 或者,如: a|b
例如:
[root@CentOS7 ~]# cat 1.sh
#!/bin/bash
NUM=4
case $NUM in
1)
echo NUM == 1
;;
2)
echo NUM == 2
;;
3)
echo NUM == 3
;;
4)
echo NUM == 4
;;
*)
echo xxxxx
;;
esac
[root@CentOS7 ~]# bash 1.sh
NUM == 4
shell循环语句:
for
格式:
for 变量 in 列表
do
要做的操作
done
列表:
-
直接给出列表:1 2 3 4 5 ... #空格隔开
-
整数列表:{start..end} 、$(seq [start [step]] end)
-
通过$()命令替换得到列表
例如:
[root@CentOS7 ~]# cat 1.sh
#!/bin/bash
um=0
for num in `seq 100`;do #列表1-100的表示方法; {1..100} seq 100
let sum=$sum+$num #let
done
echo $sum
[root@CentOS7 ~]# bash 1.sh
5050
乘法表:
[root@CentOS7 ~]# cat 1.sh
#!/bin/bash
for i in {1..9};do
for j in {1..9};do
if [ $i -ge $j ];then
echo -e "$i * $j = $[i*j]\t\c" #\c很关键
fi
done
echo
done
#\t:一个制表位,实现对齐的功能 \n:换行符 \c:有了-e参数,我们也可以使用转义字符\c来强制 echo 命令不换行
[root@CentOS7 ~]# bash 1.sh
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
while循环:
格式:
while 判断条件;do
所作的操作
done
#循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;
#条件为“true”,则执行一次循环;直到条件测试状态为“false”终止循环
例如:
[root@CentOS7 ~]# cat 1.sh
#!/bin/bash
sum=0
i=1
while test $i -le 100 ;do
let sum=$sum+$i
let i=i+1
done
echo sum==$sum
[root@CentOS7 ~]# bash 1.sh
sum==5050
while 特殊用法 while read
作用:逐行处理文本
标签:语句,shell,流程,sh,echo,CentOS7,NUM,root,bash From: https://www.cnblogs.com/heyongshen/p/16802609.html