shell变量

什么是shell

命令解释器,位于系统最外层,负责人机对话:命令的翻译输入和处理结果输出

什么是shell脚本

将系统命令放在一起,顺序执行,即系统命令堆积; 特定格式、特定语法、系统命令,共同组成的文件

shell脚本能做什么

基础配置:系统初始化操作、系统更新、内核调整、网络、时区
安装程序:部署LNMP、LAMP、LMT、mysql、nginx、Redis
配置变更:nginx conf、PHP conf、mysql conf、Redis conf
业务部署:shell配合git、jenkins实现自动化部署以及回滚
日常备份:使用shell脚本对mysql进行全备和增备
信息采集:zabbix+shell,硬件、系统、服务、网络
日志分析:取值、排序、去重、统计、分析
服务扩容:监控脚本监控服务器集群cpu使用率,超出80%触发动作脚本 (调用api开通云主机,初始化、加集群)
服务缩容:监控脚本监控服务器集群cpu使用率,低于20%触发动作脚本 (查看节点数,判断预设值,释放节点)
总结:简化工作,避免重复性、周期性操作,减少故障几率

学习shell需要哪些知识

熟练vim辑编器 熟练Linux命令 熟练Linux三剑客grep sed awk 学习方法:基础命令、基础服务、大量练习、思路

shell基本规范

脚本存放在固定目录 开头#!/bin/bash,指定命令解释器 作者和版本 扩展名.sh,便于识别 复杂脚本,添加必要注释 成对符号一次书写完成 循环格式一次性输入完成 脚本中文件必须使用绝对路径

vim test1.sh #!/usr/bin/bash 脚本中不写,如果./执行,默认调用bash翻译 脚本中写了解释器,使用./执行直接调用相应解释器

shell脚本五种运行方式

  1. ./脚本名 相对路径方式运行必须有x权限
  2. sh 脚本名
  3. source 脚本名 以root身份运行可以没有x权限
  4. . 脚本名
  5. /sh/test.sh 绝对路径方式运行必须有x权限

shell变量

变量是shell传递数据的一种方法,即用一个固定的字符串去表示不固定的值,便于后期引用。shell中的变量根据来源分为环境变量和自定义变量;根据作用域的范围分为局部变量和全局变量。

系统变量:系统提供的变量
自定义变量:用户自己通过shell语法定义的变量
局部变量:只在当前shell环境中生效的变量,不会被其他shell环境访问到的变量
全局变量:能够在父shell环境中访问同时也能够在其他shell环境中访问到的变量

变量命名规范

  1. 变量名由字母、数字、下划线组成,不能以数字开头,环境便来那个建议大写
  2. 等号两侧不能有空格
  3. 在Bash中变量默认类型都是字符串类型,不能直接进行数学运算
  4. 变量的值如果有空格,需要使用单引号或双引号括起来

创建变量

基本语法

变量名=变量值

案例一

sum=0

上面的脚本的意思是声明一个叫做sum的变量,其初始值为0

引用变量

基本语法

$变量名

案例一

sum=0
echo $sum

取消变量

unset 变量名

把变量提升为全局变量

当我们定义变量的时候默认是只能在当前shell环境中访问,不能在父shell环境中访问,因此为了能够在父shell中能够访问就需要把变量提升为全局变量。

export 变量名

变量赋值

这里的变量赋值指的是把表达式的值赋值给一个变量.可以使用$()

sum=0
a=$( expr $sum + 1)

特殊变量

有些变量我们可以在脚本中直接访问,无需定义。

$n

n 是数字范围是1-9,表示第1-9个参数,$0表示当前脚本的名字

#!/bin/bash

echo $1

$#

获取传入的参数的个数,常用于循环

echo $#

$*

$* 获取传入的所有参数,并且把所传入的参数当做一个整体

$@

$@ 获取传入的所有参数,并且把每个参数单独对待

echo $@

$?

$? 返回最后一次执行的命令的状态,如果是0表示正确执行否则出现错误

echo $?

你可能感兴趣的:(shell,shell,linux)