Shell脚本——编程规范与变量

Posted 可乐卷儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本——编程规范与变量相关的知识,希望对你有一定的参考价值。

一、Shell脚本概述

Shell脚本就是将要执行的命令按顺序保存到一个文本文件,并给该文件分配可执行权限,方便一次性执行的一个程序文件。

  • 将要执行的命令按顺序保存到一个文本文件
  • 给该文件分配可执行权限
  • 可结合各种Shell控制语句以完成更复杂的操作

1、应用场景

主要是方便管理员进行设置或管理,可结合格式Shell控制语句以完成更复杂的操作,常用于以下场景:

  • 重复性操作
  • 交互性任务
  • 批量事务处理
  • 服务运行状态监控
  • 定时任务执行

2、作用–命令解释器,“翻译官”

结余系统内核与用户之间,负责解释命令行;使用命令管理系统,所有可以看做是一系列命令的集合,按顺序从上到下执行

cat /etc/shells  #查看系统可支持的shell环境
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh

目前大多数linux系统采用的默认shell环境是bash,shell环境都可以使用yum安装

yum -y install ksh  #安装ksh shell环境
yum -y install csh  #安装csh shell环境
.....

我们来大概看一下bash和sh的区别,相对来说bash比较方便好用
在这里插入图片描述

二、Shell脚本编程规范

1、编写第一个shell脚本文件

vim test.sh    #shell脚本不以扩展名定义,.sh为了好识别是shell脚本

脚本文件内容分为以下三个部分组成
在这里插入图片描述

1.1、编辑多行脚本内容

有两种方式
一种添加注释#,
在这里插入图片描述
第二种“<<”
在这里插入图片描述

2、执行脚本

2.1、添加可执行权限

chmod +x test.sh
./test.sh 

在这里插入图片描述

2.2、不添加可执行权限

  • 调用解释器执行:bash、sh
bash 脚本名称
sh 脚本名称

在这里插入图片描述

  • source test.sh
    注意点:脚本名称需要使用绝对路径
    在这里插入图片描述

  • . test.sh;source相当于“.”
    在这里插入图片描述

2.3、小结

  • source和.是在当前的shell执行脚本
  • 其余都是会在当前shell另外再开一个shell环境执行脚本,比如bash、sh、绝对路径等
    验证
vim test.sh   #新建一个脚本
#!/bin/bash #声明解释器
sleep  1000  #睡眠1000s;代码内容
pstree  

再开一个shell查看pstree
source test.sh
在这里插入图片描述
bash test.sh
在这里插入图片描述

  • sh和bash执行文件的区别
    • sh:遇到错误就不会执行后面的脚本
    • bash:遇到错误仍会继续执行,把整个脚本走完一遍
      实例
      vim test.sh
      在这里插入图片描述
      在这里插入图片描述

2.4、实操

  • 创建一个脚本,当前目录下创建目录klj,klj目录下创建文件zz,并移动到opt目录下
    在这里插入图片描述
    在这里插入图片描述

3、检测脚本

  • bash -x 脚本:显示执行过程,通常当脚本很长的时候便于定位;会把脚本中的每条命令的执行情况打印出来
  • bash -n 脚本:仅检查语法错误,如果用vim编写的话,正常的话会变色仅检测语法错误,会显示出错误的行数
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

4、实操

实验要求:配置本地yum源并且查询正在使用的yum源

#!/bin/bash
mount /dev/sr0 /mnt
cd /etc/yum.repos.d/
mkdir repo.bak
mv *  repo.bak/
echo "[centos7]
name=centos7
baseurl=file:///mnt
enable=1
gpgcheck=0">>/etc/yum.repos.d/repo.repo

yum clean all
yum makecache
yum repolist

实验结果
在这里插入图片描述

三、shell脚本变量

1、自定义变量

自定义变量是由系统用户自己定义的变量,只能用户自己的shell环境中有效,因此又称本地变量

  • 定义变量的基本格式:变量名=变量值,等号两边没有空格
  • 变量名称需以字母或者下划线开头,名称中不可用包含特殊字符(如+、-、*、/、?、%、&、#等)

1.1、查看和引用变量的值

使用ehco命令查看变量,$:shell环境中表示调用变量

在这里插入图片描述
且变量名区分大小写
在这里插入图片描述

unset 变量名  #取消/清除/释放变量
set  #查看系统所有自定义变量

在这里插入图片描述

set | grep AAA:查询变量AAA

在这里插入图片描述
拓展知识
在这里插入图片描述

1.2、变量赋值的操作

1.2.1、大括号–${}

${}:相当于分界符
在这里插入图片描述

1.2.2、单双引号–’’、“”、

  • 有特殊符号时
    • 单引号里的任何字符都会以原样输出,单引号中的变量是无效的
    • 双引号 (双引号里可以有变量,也可以出现转译字符)双引号主要起界定字符串的左右,特别是当要赋值的内容中包含空格时,必须以双引号括起来;其他情况双引号可以省略
      在这里插入图片描述
  • 无特殊符号的时,单引号和双引号一个概念
    在这里插入图片描述

1.2.3、转义符–\\

转义符跟双引号类似,当赋值的内容中包含空格时,使用转义符,可以输出变量值
在这里插入图片描述

1.2.4、反撇号–`

反撇号主要是用于命令替换,允许将执行某个命令的平米输出结果赋值给变量;反撇号括起来的范围内必须是能够执行的命令行,否则会出错
在这里插入图片描述
which rz #查找出rz命令的程序位置
rpm qf # 查找安装的软件包

1.2.5、readonly命令

readonly 脚本    #只读变量

赋值只读无法更改变量值,取消只读变量,只能退出exit,重新连接;或者更改shell变量,比如更换bash环境即可
在这里插入图片描述

1.2.6、read命令

read命令用来提示用户输入信息,从而实现简单的交互过程;
执行时将从标准输入设备读入一行内容,并以空格为分隔符,将读入的各字段挨个复制给指定的变量(多余的内容赋值给最后一个变量)。
在这里插入图片描述

-p:友好的输入;提示输
-n num:限制变量值最多的字符数
-s :静默模式;常用于输入密码场景

在这里插入图片描述
在这里插入图片描述

1.3、实操

  • 自定义创建新用户和密码
    vim user.sh
    在这里插入图片描述
    没有在文件内定义创建具体用户,输入任意用户名即可创建用户
    在这里插入图片描述
    增加一条:name=lisi;代表只能增加一个用户lisi
    在这里插入图片描述

2、环境变量

2.1、概念

环境变量指的是处于运行需要而有linux系统提前创建的一类变量,用户不变的情况下,一直延用环境变量

  • 使用env命令可以查看当前工作环境下的所有环境变量
  • 查看单个环境变量
    • 比如:echo ¥HOME

2.2、自定义变量变成环境变量

  • 永久:需要写入配置文件
vim /etc/profile   #环境变量配置文件
export  aa=10
bash #切换shell环境
source  /etc/profile
echo $aa 
  • 临时
bb=20
export bb
exit

退出系统再重新登入
在这里插入图片描述

  • echo $SHLVL #查看当前shell的层级
    在这里插入图片描述

2.3、实操

实验要求:可以执行test.sh
在这里插入图片描述
这时看一下根目录在/root
在这里插入图片描述
那就需要在环境变量里面加入
vim /etc/profile
PATH=$PATH:/root #增加一行变量
在这里插入图片描述
在这里插入图片描述

以上是关于Shell脚本——编程规范与变量的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本——shell编程规范与变量

shell编程规范与变量

Shell编程规范与变量

Shell脚本——编程规范与变量

Shell编程规范与变量

不说了 写脚本去了... shell脚本编写规范和相关变量类型