Linux系统管理shell的变量及判断语句

一.Shell变量的作用、类型

变量的作用
为灵活管理 Linux 系统提供特定参数,有两层意思:
变量名:使用固定的名称,由系统预设或用户定义
变量值:能够根据用户设置、系统环境的变化而变化
变量的类型
自定义变量:由用户自己定义、修改和使用
环境变量:由系统维护,用于设置工作环境
位置变量:通过命令行给脚本程序传递参数
预定义变量: Bash 中内置的一类变量,不能直接修改

1.自定义变量

定义一个新的变量
格式: 变量名 = 变量值
变量名以字母或下划线开头,区分大小写,建议全大写
查看变量的值
格式: echo  $ 变量名
赋值时可以使用引号,它们将有如下意义:
双引号:允许通过 $ 符号引用其他变量值

NEW=“WORD$Version”,将引用上面的变量,结果是WORD3.0

单引号:禁止引用其他变量值, $ 视为普通字符

当需要用$符号时。如CASH=‘US$IS’

反撇号:命令替换,提取命令执行后的输出结果

EX=`pgrep –U root | wc –l`,把命令结果赋给EX

从键盘输入内容为变量赋值
格式: read  [-p   提示信息 ”]  变量名

read  –p “请输入循环次数:” CISHU

设置变量的作用范围
格式 1 e xport   变量名 ... ( 已有的变量)
格式 2 export  变量名 = 变量值  ... (新定义的变量)
—— 两种格式可以混合使用

  2.整数变量的运算(赋值时必须用反撇号`

格式: expr  变量 1   运算符  变量 2  [ 运算符 变量 3] ...
常用运算符
加法运算: +
减法运算: -
乘法运算: \ *
除法运算: /
求模(取余)运算: %

:echo  $EX  $CISHU

 AK=`expr $EX + $CISHU` (假定read 时输入15)

    echo $AK 

AK=`expr $EX - $CISHU`

    echo $AK

AK=`expr $EX \* $CISHU`

    echo $AK

AK=`expr $EX / $CISHU`

    echo $AK

AK=`expr $EX % $CISHU`

       echo $AK

 

3.环境变量

由系统提前创建,用 设置用户的工作环境
配置文件: /etc/profile ~/.bash_profile
常见的环境变量:

 4.位置变量

表示为 $n n 1~9 之间的数字 , 超过 9 则用 ${n}

 

5.预定义变量

序设计-判断语

二. Shell程序设计-判断语句

1.test命令

测试特定的表达式是否成立,当条件成立时,测试语句的返回值为 0 ,否则为其他数值
格式 1 test  条件表达式
格式 2 条件表达式  ]
文件测试
格式: 操作符  文件或目录  ]
常用的测试操作符 ( clear)

 返回0表示条件成立

返回1表示条件不成立

 2.整数值比较

格式: 整数 操作符  整数 2  ]
常用的测试操作符 ( clear, 假定虚拟机内存为 1024M)

 用户数是否 > 1

空闲内存是否 < 1024MB

3.字符串比较

格式 1 字符串 1  =  字符串 2 ]

                 [  字符串1  !=  字符串2 ]

格式 2 [  -z  字符串 ]
常用的测试操作符 ( clear)
逻辑测试
格式 1 表达式 1  ]  操作符  表达式 2  ]  ...
格式 2 命令 操作符  命令 2  ...
常用的测试操作符

 4.单分支if语句

判断挂载点目录,若不存在则自动创建

 

 5.双分支if语句 

判断目标主机是否存活,显示检测结果

 判断ping命令的检测结果,分别给出不同提示

6.多分支if语句

判断分数范围,分出优秀、合格、不合格三档

 

判断分数所在区间,给出不同的分档结果

三.实验案例:使用Shell脚本监控主机

1.需求描述

编写监控脚本 sysmon.sh ,存在异常时邮件告警
实现思路 ( 因没安装邮件服务,带 * 号部分暂时不做)
使用 df mpstat free 等命令提取各种监控指标

 (mpstat要先安装,详见下页)

将各指标与正常值进行比较,保存异常情况
* 检查异常记录,若存在则发送告警邮件
mpstat 要先安装,先挂载光碟到 /media/ cdrom

mount /dev/cdrom /media/cdrom

cd /media/cdrom/Packages

 ls  syss*

 yum  -y install  sysstat(tab键补全)

请运行mpstat,理解各段意义

grep “/$”找到文本中以/结束的行

tali -1 输入文件尾部第一行内容

2.脚本全部内容如下: 

#!/bin/bash

#邮件报警监控脚本

#-----------------------采集各个监控项目的数值--------------------------#

gl=$(df -hT |grep "/$" |awk '{print $6/1}')

ul=$(mpstat  |tail -1 |awk '{print $12}' |awk -F. '{print 100 - $1}')

ml=$(free -m | awk /Mem/'{print $3 / ($3 + $4) * 100}' | awk -F. '{print $1}')

if [ $gl -gt 90 ]; then

echo "根分区使用率:${gl}% 超出告警上限值: 90%" >> /tmp/alert.txt

fi

if [ $ul -gt 80 ]; then

echo "CPU用率:${ul}% 超出告警上限值: 80%" >> /tmp/alert.txt

fi

if [ $ml -gt 90 ]; then

echo "内存使用率:${ml}% 超出告警上限值: 90%" >> /tmp/alert.txt

fi

*[ -e /tmp/alert.txt ] && cat /tmp/alert.txt |mail?abc@163.com

*[ -e /tmp/alert.txt ] && rm -rf /tmp/alert.txt &> /dev/null

 3.在命令行提取各种监控指标

判断异常指标并保存到临时文件 / tmp /alert.txt

 sh sysmon.sh (记得将根分区使用率降到0.5%,

 ls  /temp

* 启动 sendmail 服务,使用 mail 命令发送邮件

 四.心得体会:Linux Shell变量与判断语句的学习

在深入学习了Linux Shell中的变量和判断语句之后,我感受到了Shell脚本的强大和灵活性。通过这段时间的学习和实践,我不仅对Shell脚本的基本语法有了更深刻的理解,也对其在实际工作中的应用有了更清晰的认识。

1.变量的学习心得

变量在Shell脚本中扮演着至关重要的角色,它们使得脚本能够处理动态数据,增强了脚本的灵活性和可重用性。在学习变量的过程中,我了解到变量命名的规则、赋值的方式以及引用的方法。特别是对于特殊变量的理解,如$0$1等位置参数和$?表示上一个命令的退出状态,这些变量在编写复杂的脚本时非常有用。

同时,我也注意到在使用变量时需要注意的一些细节,比如变量名和等号之间不能有空格,引用变量时需要使用$前缀等。这些细节虽然看似微不足道,但在实际编写脚本时却非常重要,稍有疏忽就可能导致脚本运行出错。

2.判断语句的学习心得

判断语句是Shell脚本中的另一个重要概念,它允许我们根据条件执行不同的代码块。在学习判断语句的过程中,我掌握了if-then-fiif-then-else-fi以及if-then-elif-else-fi等基本结构,并了解了如何使用各种比较运算符来构建条件表达式。

判断语句在实际工作中的应用非常广泛,比如可以用来检查文件是否存在、检查用户输入是否有效等。通过学习判断语句,我感受到了Shell脚本在处理条件和逻辑判断方面的强大能力。

3.实际应用中的体会

在学习了变量和判断语句之后,我开始尝试将它们应用到实际的工作场景中。我编写了一些简单的Shell脚本来自动化一些重复性的任务,比如批量重命名文件、检查服务器状态等。通过实践,我深刻体会到了Shell脚本在提高工作效率方面的巨大作用。

同时,我也意识到编写高质量的Shell脚本需要不断学习和实践。在实际应用中,我遇到了许多挑战和问题,比如如何处理复杂的逻辑判断、如何优化脚本的性能等。这些问题促使我不断学习和探索新的知识和技能,以提高自己的编程能力。

4.总结与展望

通过学习Linux Shell中的变量和判断语句,我深刻感受到了Shell脚本的魅力和实用性。这些基础知识是编写高质量Shell脚本的基石,它们将帮助我在未来的工作中更加高效地处理各种任务。同时,我也意识到学习是一个永无止境的过程,我将继续深入学习和探索Shell脚本的高级特性和应用场景,不断提高自己的编程能力和工作效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值