Shell-(四)Shell流程控制

本文最后更新于:May 10, 2022 pm

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

目录

if判断

单分支

1
2
3
if [ 条件判断式 ];then
程序
fi

或者

1
2
3
4
if [ 条件判断式 ]
then
程序
fi

示例:

1
2
3
4
5
6
7
8
9
root@VM-12-8-ubuntu:~# a=23
root@VM-12-8-ubuntu:~# if [ $a -gt 18 ];then echo OK;fi #如a大于18
OK
root@VM-12-8-ubuntu:~# a=23
root@VM-12-8-ubuntu:~# if [ $a -gt 15 ] && [ $a -lt 25 ];then echo ok;fi
ok
root@VM-12-8-ubuntu:~# a=23
root@VM-12-8-ubuntu:~# if [ $a -gt 15 -a $a -lt 25 ];then echo ok;fi # 若a大于15,小于25,-a表示&& -o表示||
ok

多分支

1
2
3
4
5
6
7
8
9
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
else
程序
fi

双分支示例:

脚本 parameter.sh

1
2
3
4
5
6
7
8
#!/bin/bash
echo '======$n======'
if [ $1 -lt 18 ]
then
echo "未成年"
else
echo "成年人"
fi

执行:

1
2
3
4
5
6
root@VM-12-8-ubuntu:~/myscript# ./parameter.sh 15
======$n======
未成年
root@VM-12-8-ubuntu:~/myscript# ./parameter.sh 23
======$n======
成年人

多分支示例:

脚本 parameter.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
echo '======$n======'
if [ $1 -lt 18 ]
then
echo "未成年"
elif [ $1 -lt 30 ]
then
echo "青年人"
elif [ $1 -lt 50 ]
then
echo "中年人"
else
echo "老年人"
fi

执行:

1
2
3
4
5
6
7
8
9
10
11
12
root@VM-12-8-ubuntu:~/myscript# ./parameter.sh 15
======$n======
未成年
root@VM-12-8-ubuntu:~/myscript# ./parameter.sh 25
======$n======
青年人
root@VM-12-8-ubuntu:~/myscript# ./parameter.sh 45
======$n======
中年人
root@VM-12-8-ubuntu:~/myscript# ./parameter.sh 55
======$n======
老年人

for循环

基本语法1

用法

1
2
3
4
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done

示例:

脚本 parameter.sh

1
2
3
4
5
6
7
#!/bin/bash
echo '======$n======'
for (( i=1;i <= $1; ++i )) # 在双括号中就可以直接使用数学上的符号
do
sum=$[ $sum + $i ]
done
echo $sum

执行:

1
2
3
root@VM-12-8-ubuntu:~/myscript# ./parameter.sh 10
======$n======
55

基本语法2

用法

1
2
3
4
for 变量 in 值1 值2 值3 ....
do
程序
done

示例:

1
2
3
4
5
6
7
8
9
root@VM-12-8-ubuntu:~/myscript# for it in a b c d e;do echo $it; done
a
b
c
d
e

root@VM-12-8-ubuntu:~/myscript# for it in {1..100};do sum=$[$sum+$it];done;echo $sum
5050

for整合$*和$@

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
echo '======$*======'
for it in "$*" #注意要用引号引起来,下同
do
echo $it
done

echo '======$@======'
for it in "$@"
do
echo $it
done

执行:

1
2
3
4
5
6
7
8
9
10
11
root@VM-12-8-ubuntu:~/myscript# ./parameter.sh a b c d e f g
======$*======
a b c d e f g
======$@======
a
b
c
d
e
f
g

while循环

用法

1
2
3
4
while [ 条件判断式 ]
do
程序
done

示例:

脚本 parameter.sh

1
2
3
4
5
6
7
8
9
#!/bin/bash
echo '======$0======'
a=1
while [ $a -le $1 ]
do
sum=$[ $sum + $a ]
a=$[ $a + 1 ]
done
echo $sum

执行:

1
2
3
root@VM-12-8-ubuntu:~/myscript# ./parameter.sh 10
======$0======
55

其中,脚本中也可以这样写:

1
2
3
4
5
6
7
8
9
#!/bin/bash
echo '======$0======'
a=1
while [ $a -le $1 ]
do
let sum+=a
let a++
done
echo $sum

使用是一样的使用方法。


本文作者: 墨水记忆
本文链接: https://tothefor.com/DragonOne/b8fa9e76.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!