Liunx shell编程及自动化运维实现--第一章变量

一、shell前言

1.什么是shell?

shell:壳,命令解释器,一种应用程序

2.shell语言的特点

shell语言是指unix操作系统的命令语言,同时又是该命令语言的解释程序的简称

shell本身是一个用C语言编写的程序,他是用户使用Unix/Liunx的桥梁,用户大部分工作都是通过shell完成的

shell既是一种命令语言,有是一种程序设计语言,作为命令语言,他交互式的解释和执行用户输入的命令

作为程序设计语言,定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支

他虽然不是Unix/Liunx系统内核的一部分,但他调用了系统核心的大部分功能来执行程序

建立文件并以并行的方式是协调各个程序的执行

因此,对于用户来说,shell是最重要的实用程序

深入了解和熟练掌握shell的特性及其使用方法,是用好Unix/Liunx系统的关键

3.shell能做什么?

  1. 自动化批量系统初始化程序(update,软件安装,时区设置,安全策略。。)
  2. 自动化批量软件部署程序(LAMP,LNMP,Tomcat,LVS,Nginx)
  3. 应用管理程序(KVM,集群管理扩容,MySQL,DELLR720批量RAID)
  4. 日志分析处理程序(PV,UV,200代码,1200代码,top100,grep/awk)
  5. 自动化备份恢复程序(MySQL完全备份/增量+Crond)
  6. 自动化管理程序(批量远程修改密码,软件升级,配置更新)
  7. 自动化信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySOL)
  8. 配合Zabbix信息采集(收集系统/应用状态信息,CPUMem,DiskNet,TCP Status,Apache,MySQL)
  9. 自动化扩容(增加云主机------>业务上线)zabbix监控CPU80%+|50%Python API AWS/EC2(增加/删除主机)+   Shell  Script(业务上线)
  10. 俄罗斯方块,打印三角形,打印圣诞树,打印五角星,运行小火车,担克大战,排序算法实现
  11. Shell可以做任何事(一切取决于业务需求)

4.shell执行方式

准备测试脚本

vim   file

echo  "hello  2024"

read  -p  "请输入你的名字:”  name

echo  "‘哈哈  $name 是帅哥”

  • bash    file1    第一种和第二种是同一种
  • sh   file1
  • .  file1
  • source   file1
  • 区别:前两种是子shell,执行后不改变目录,后两种是本shell,执行后改变目录

5.shell解释器在哪

cat   /etc/shells

chsh    -l

二、变量

shell变量:用一个固定字符串去表示不固定的内容,便于修改

1.自定义变量

1.1简述

        用户自定义变量是最常用的变量类型,其特点是变量名和变量值都是由用户自由定义的

1.2定义变量

变量名=变量值

例如:name=xulei

注意规则:

        变量名不能以数字开头,只能使用英文字母,数字和下划线

        等号左右两侧左右不能有空格,但可以使用下划线

        变量的值如果有空格,必须用引号包含

        不能使用标点符号

        不能使用bash里的关键字

        变量名,请使用五个字母以上

1.3变量调用

echo  $name     输出变量

1.4重复定义变量

重复定义变量会进行变量覆盖

想要叠加的话

aa=123

aa="$aa"456

或aa=${aa}456

1.5变量查看

set   查看所有变量

1.6变量删除

unset  变量名     

1.7交互定义变量

read从键盘读入变量值

read    变量名

三种引号

1.""弱引用

school=1000phone

输出:echo   ${shool}  is  good   没有使用引号,被解释为多个命令

2.''强引用

echo    "${school} is  good"           脱去空格

输出:1000phone is  good

3.··转义符号(键盘~下的符号)

echo  `${school}  is  good`            脱去所有字符

输出:${school}  is  good

shool=·date·

输出:时间                反引号优先执行,限制性date命令,在执行定义变量

2.整数运算

2.1方法一:expr

语法

        expr  1 + 2

        expr   $num1 + $num2

+加          -减        \*乘        /除        %取余

2.2方法二:$(())

echo   $(($num1+$num2))

echo   $((num1+num2))

echo   $((5-3*2))

echo   $((2**3))                2的3次方

sum=$((1+2));    echo  $sum     分号可一行执行几条语句

2.3方法三:$[]

echo     $[5**2]

2.4方法四:let

let  sum=2+3;  echo  $sum

let  i++;   echo  $1

3.小数运算

提前安装bc计算机程序

echo  “2*4” |  bc

echo   "2^4"  |  bc

echo   "scale=2;6/4"  |   bc

bc交互运算器,支持浮点运算    scale=2 保留小数点后两位

4.环境变量

自定义变量,只能在当前shell生效,其他shell是不生效的

env         查看环境变量

定义环境变量:

        方法一:export   back_dir1=/home/backup    声名环境变量

        方法二:export   back_dir2  将自定义变量转化为环境变量    转换环境变量

变量作用范围:在当前shell和子shell生效

bash  打开子shell

要想在当前用户登录后每个shell中都可以用,可将变量放到  ~/.bash_profile

export  aaa=123456

要想在所有用户登录后每个shell中都可以用,可将变量放到  /etc/profile

5.位置变量和预定义变量

5.1位置变量,相当于java中的参数

$0                $1$2$3$4$5$6$7$8$9

命令             参数1参数2参数3参数4参数5参数6参数7参数8参数9

案例

指定脚本程序,用户自行输入两门学科成绩,自动算出平均数

vim  avg.sh

#!/bin/bash

echo  "($1+$2)/2" | bc

chomd  +x  avg.sh

./avg.sh  20 30  ------->25运行程序

思考:位置变量和read读取变量,到底用哪个?————》用谁都可以

5.2预定义变量

$0 脚本名/程序名

$* 用户输入的所有参数

$#  参数的个数

$? 上一个程序的返回值(0成功,非0失败)

$$  当前进程序的id

示例

vim  avg.sh

#!/bin/bash

echo  "($1+$2)/2" | bc

echo  "该程序名为$0"

echo  "该程序名使用了$#个参数"    运行时输入几个参数有几个参数

$*可用在用户输入信息时收集信息

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值