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

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列表中常数或字符串的个数相同,当循环的数量足够了,就自动退出

  • 语法格式
forin 列表
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 脚本文件后,就可以在终端中使用函数,不需要通过脚本使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值