1 shell流程控制
1.1 单分支if语句
- 场景:单一条件,只有一个输出
- 语法格式:
if [ 条件 ]
then
指令
fi # fi作为结束语
示例:
#!/bin/bash
if [ "weibo" == "中国人" ]
then
echo "中国人"
fi
1.2 双分支if语句
- 场景:一个条件,两种结果
- 语法格式
if [ 条件 ]
then
指令1
else
指令2
fi
- 双分支if语句示例
#!/bin/bash
# 单if语句的使用场景
if [ "$1" == "nan" ]
then
echo "您的性别是 男"
else
echo "您的性别是 女"
fi
阻塞等待输入指令 read
参数-p:同于提示
如:read -p “请输入数字”
显示请输入
将输入保存到变量:
read 变量名
配合if使用
#!/bin/bash
read -p "请输入名字:" user
if [ "weibo" == "中国人" ]
then
echo "中国人"
fi
1.3多分支语句if elif else fi
- 场景:n个条件,n+1个结果
- 语法格式
if [ 条件 ]
then
指令1
elif [ 条件2]
then
指令2
else
指令3
fi
- 示例:
多分支if语句示例
#!/bin/bash
# 单if语句的使用场景
if [ "$1" == "nan" ]
then
echo "您的性别是 男"
elif [ "$1" == "nv" ]
then
echo "您的性别是 女"
else
echo "您的性别,我不知道"
fi
1.4 要求脚本执行需要有参数,通过传入参数来实现不同的功能
参数和功能详情如下
参数 | 执行效果
start | 服务器启动中…
stop | 服务器关闭中…
restart | 服务器重启中…
脚本 X.sh 使用方式 X.sh [ start|stop|restart ]
脚本内容
admin-1@ubuntu:/data/scripts/python-n# cat if.sh
#!/bin/bash
# 多if语句的使用场景
if [ "$1" == "start" ]
then
echo "服务启动中..."
elif [ "$1" == "stop" ]
then
echo "服务关闭中..."
elif [ "$1" == "restart" ]
then
echo "服务重启中..."
else
echo "$0 脚本的使用方式: $0 [ start | stop | restart ]"
fi
1.5 case选择语句
我们发现多if语句使用的时候,代码量很多,而且整体看起来确实有那么一丁点乱,有没有办法更好的实现这种效果呢?就是Case语句
效果和if一样,也是多分支语句
- case语句格式
#!bin/bash
case "$1" in
"start")
echo "启动"
;;
"stop")
echo "停止"
;;
"restart")
echo "重启"
;;
*)
echo "请输入start|stop|restart"
;;
esac
1.6 for循环语句
循环指定的所有元素,循环完毕之后就退出
注意:”for” 循环总是接收 “in” 语句之后的某种类型的字列表,执行次数和list列表中常数或字符串的个数相同,当循环的数量足够了,就自动退出
- 语法格式
for 值 in 列表
do
执行语句
done
- 示例:遍历文件
#!/bin/bash
# for语句的使用示例
for i in $(ls /root)
do
echo "${i}"
done
1.7 while循环
- 语法格式:
while 条件
do
执行语句
done
- while语句示例
#!/bin/bash
count=1
while [ $count -lt 5 ]
do
echo "count:$count"
$((count += 1))
done
1.8 until循环语句
- 语法格式
until 条件
do
执行语句
done
- 示例
#!/bin/bash
count=1
until [ count -ge 5 ]
do
echo "count: $count"
let count=count+1
2 函数
#!/bin/bash
dayin(){
echo "函数"
}
注意:不能定义空函数,也即是说{}中必须有内容
2.1 函数的简单调用
#!/bin/bash
dayin(){
echo "wo de mingzi shi 111"
}
dayin # 输出函数名以调用
2.2 函数传参和函数体内调用参数示例
#!/bin/bash
dayin(){
echo "wo de mingzi shi $1"
}
# 调用函数传参
dayin 111 # 函数名后面的参数会作为参数传入函数内
2.3 在命令行中直接传参到函数中
#!/bin/bash
dayin(){
echo "函数:$1, $2, $3"
}
dayin $1 $2 $3
终端中:
python@ubuntu:~/Desktop$ bash dayin a b c
函数:a, b, c
2.4 脚本传参,函数调用(生产用)
#!/bin/bash
# 函数的使用场景二
canshu = "$1"
dayin(){
echo "wo de mingzi shi $1"
}
# 调用函数传参
dayin "${canshu}"
2.5 限制传入参数的个数
#!/bin/bash
dayin(){
if [ $# = 3]
then
echo "函数:$1, $2, $3"
else
echo "需要3个参数"
fi
}
dayin $1 $2 $3
source 脚本文件后,就可以在终端中使用函数,不需要通过脚本使用