您的位置:首页 > 运维架构 > Shell

自动化运维入门(四)shell流程控制(控制语句与函数)

2018-10-10 11:39 375 查看

#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 脚本文件后,就可以在终端中使用函数,不需要通过脚本使用

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: