shell执行流程控制及运算符2

1. case

工作原理:**
● case语句为多重匹配语句
● 如果匹配成功,执行相匹配的命令

语法结构

case $变量名称 in         <== 关键字为case,还有变量前有$    
	"第一个变量内容")      <== 每个变量内容建议用双引号括起来,关键字则为小括号)    
		程序段    
		;;                <== 每个类型结尾使用两个连续的分号来处理     
	"第二个变量内容")        
		程序段    
		;;    
	*)                   <== 最后一个变量内容都会用*来表示所有其它值,不包含第一个变量内容和第二个变量内容的其它程序执行段    
		程序段
		;;   
esac         

案例1: 服务状态管理

● 当给程序传入start、stop、restart三个不同参数时分别执行相应命令

case $1 in
	start|S)
		systemctl start httpd &> /dev/null && echo "apache 启动成功"
	stop|T)
		systemctl stop httpd &> /dev/null && echo "apache 停止成功"
	restart|R)
		systemctl restart httpd &> /dev/null &&echo "apache 重启完毕"	

案例2:模拟一个多任务维护界面

● 当执行程序时先显示总菜单,然后进行选择后做相应维护监控操作
disk 监控磁盘使用情况
memory 监控内存使用情况
upload 监控启动负载

#! /bin/bash

#1.打印菜单栏信息
function munu(){
echo '
***************请选择**********
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
m 显示内存信息
u 查看系统负载
q 退出程序
*********************************
'
}
menu
while true
do
	read -p “请输入你要操作的选项:” choice
case $choice in
	h)
		menu
		;;
	f)
		echo '*********磁盘分区'
		blkid | cut -d : -f1
		;;
	m)
		echo '*********内存信息'
		free -m
		;;
	u)
		echo '*********系统负载'
		uptime
		
	q)
		exit 0
		echo '正在退出欢迎下次使用'
		;;
	*)
		echo '请通过h查看帮助'
		;; 
done

案例3:监控信息

● 输入不同的命令,监控不同的系统信息

#!/bin/bash
read -p "Please input disk,mem,upload:" I
case $I in	
disk|DISK)		
watch -n 1 "df -h /"		
;;	
mem|MEM)		
watch -n 1 "free -m"		
;;	
upload|UPLOAD)		
watch -n 1 uptime		
;;	
*)		
echo "input error"			
;;
esac

2. 函数

● 什么是函数?

  1. shell中允许将一组命令集合或语句形成一段可用代码,称为shell函数
  2. 给这段代码起个名字称为函数名,后续可以直接调用该段代码的功能
function 函数名()
{
	函数体(一堆命令的集合,来实现某个功能)
	echo hello
	echo world
}

案例:有颜色的字符串输出

RED=”\033[31m”  ##红色符号
GREEN=”\033[32m” ##绿色符号
YELLOW=”\033[33m” ##黄色符号
END=”\033[0m” ##结束符号
print_color_string(){
	color=$1
	string=$2
	case $color in
		red)
			echo -e “$RED $string $END;;
green)
			echo -e “$GREEN $string $END;;
blue)
			echo -e “$BLUE $string $END;;
}
##测试
print_color_string ‘red’  ‘nihao’

3. 运算符号

+ ##加法
- ##减法
* ##乘法
/ ##除法
% ##除法后的余数
** ##乘方
++ ##自加
-- ##自减
< ##小于
<= ##小于等与
> ##大于
>= ##大于等与
= ##等于
+= ##j+=i等价于j=j+i
*= ##j=j*i
/= ##j=j/i
%= ##j=j%i

4. 运算指令

(()) ##((a=1+2))

let ##let a=1+2

expr ##expr 1 + 2 注意有空格

bc ##数学计算器

$[] ##echo $[1+2]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值