Shell编程规范与变量

一、Shell脚本

只要将平时使用的各种Linux命令顺序保存到一个文本文件中,然后添加可执行权限,这个文件就成了shell脚本。

shell脚本的概念

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

shell脚本应用场景

1、重复性操作
2、交互性任务
3、批量事务处理
4、服务运行状态监控
5、定时任务执行
6、…

二、 Shell的作用

shell的作用——命令解释器,“翻译官”
介于系统内核与用户之间,负责解释命令行。
在这里插入图片描述
用户的登录shell
1、登录后默认使用的shell程序,一般为/bin/bash
2、不同shell的内部指令、运行环境等会有所区别

在这里插入图片描述

Linux常用shell种类有
不同的shell具备不同的功能,shell还决定了Linux中默认的shell是/bin/bash,流行的shel1有ash、bash、csh、zsh等,不同的shell都有自己的特点以及用途。
  
bash
大多数Linux系统默认使用的shel1,bash shell是Bourne shell 的一个免费版本,它是最早的Unixshel1,bash还有一个特点,可以通过help命令来查看帮助。包含的功能几乎可以涵盖shell所具有的功能,所以一般的shel1脚本都会指定它为执行路径。

csh
C shell使用的是"类C"语法,csh是具有C语言风格的一种shell,其内部命令有52个,较为庞大。目前使用的并不多,已经被/bin/tcsh所取代。

ksh
korn shell的语法与Bourne shell相同,同时具备了C shell的易用特点。许多安装脚本都使用ksh,ksh有42条内部命令。与bash相比有一定的局限性。

tcsh
tcsh是csh的增强版,与C she11完全兼容。是一个快捷方式,已经被/bin/bash所取代。

nologin
指用户不能登录

zsh
目前Linux里最庞大的一种shell∶zsh。它有84个内部命令,使用起来也比较复杂。一般情况下,不会使用该shell。

三、编写第一个shell脚本

3.1 编写脚本代码

1、使用vim文本编辑器
2、每行一条Linux命令,按执行顺序依次编写
在这里插入图片描述

3.2 赋予可执行权限

使脚本具有可执行属性

chmod +x first.sh

在这里插入图片描述

3.3 执行脚本文件

执行方式:
方式一:sh 脚本文件路径(不需要执行权限也可以操作)
方式二: ./ 脚本文件路径(需要执行权限来操作)
方式三:source 脚本文件路径(不需要执行权限也可以操作,立马工作让环境生效)

3.4 更完善的脚本构成

1、脚本声明
2、注释信息
3、可执行语句

在这里插入图片描述

四、重定向与管道操作

4.1 交互式硬件设备

1、标准输入:从该设备接收用户输入的数据
2、标准输出:通过IP该设备向用户输出数据
3、标准错误:通过该设备报告执行出错信息
在这里插入图片描述
在实际的Linux系统维护中,可以改变输入、输出内容的方向,而不使用默认的标准输入、输出设备(键盘和显示器),这种操作称为重定向。

4.2 重定向操作

在这里插入图片描述注:&> = 2>&1



## 重定向输入

指的是将命令中接收输入的途径由默认的键盘改为指定的文件,而不是等待从键盘输入。重定向输入"<"操作符。

在这里插入图片描述


定向输出使用">"">>"操作符号,分别用于覆盖或追加文件

在这里插入图片描述


错误重定向指的是将执行命令过程中出现的错误信息(如选项或参数错误等)保存到指定的文件。而不是直接显示在屏幕上。错误重定向使用"2>"操作符,其中"2"是指错误文件的编号(在使用标准输出、标准输入重定向时,实际上省略了 1、0 编号)。
在实际应用中,错误重定向可用来收集程序执行的错误信息,为排错提供依据;对于Shel1 脚本,还可以将无关紧要的错误信息重定向到空文件/dev/null 中,以保持脚本输出的简洁。将一些重要的执行程序的错误重定向到某个文件中。
使用"2>“操作符时,会像使用”>"操作符一样覆盖目标文件的内容,若要追加内容而不是覆盖文件,则应改用"2>>“操作符。也可以使用”&>"操作符将正确和错误两类输出信息保存到同一个文件。

只有错误的才会输出


正确错误一起输出

在这里插入图片描述
\


4.3 管道操作符号“|”

将左侧的命令输出结果,作为右侧命令的处理对象


五、Shell变量的作用、类型

5.1 变量的作用

1、用来存放系统和用户需要使用的特定参数(值)
2、变量名:使用固定的名称,由系统预设或用户定义
3、变量值:能够根据用户设置、系统环境的变化而变化

5.2 变量的类型

1、自定义变量:由用户自己定义、修改和使用
2、特殊变量:环境变量,只读变量,位置变量,预定义变量

六、 自定义变量

定义一个新的变量
变量名以字母或下划线开头,区分大小写,建议全大写

变量名=变量值

6.1 查看变量的值

echo $变量名

在这里插入图片描述


6.2 赋值时使用引号

1、双引号:允许通过$符号引用其他变量值
2、单引号:禁止引用其他变量值 ,符号引用其他变量值
3、反撇号:命令替换,提取命令执行后的输出结果

在这里插入图片描述
在这里插入图片描述
$在这里一个是做应用,一个是做字符串。

反撇号里面输入的是命令。
在这里插入图片描述


6.3 从键盘输入内容为变量赋值

read [-p “提示信息”] 变量名

read a 键盘输入,echo $a 输出引用
在这里插入图片描述

(选项)(参数)
-p指定读取值时候的提示符
-t指定读取值时候等待的时间(秒)
-a array指定输入一个数组,赋值给array
-n 2指定输入字符的任意类型的个数为2
不加参数,默认赋值给变量∶REPLY

6.4 设置变量的作用范围

格式1:export 变量名 …
格式2:export 变量名=变量值 …

局部变量
在这里插入图片描述
全局变量
在这里插入图片描述


6.5 整数变量的运算

expr 变量1 运算符 变量2 [运算符 变量3]

常用运算符
加法运算:+
减法运算:-
乘法运算:\ *
除法运算:/
求模(取余)运算:%
例:求两个数+、-、*、/、%的方法有三种∶
在这里插入图片描述
在这里插入图片描述

注∶乘法在直接使用过程中是需要*的,因为*是shell正则表达式中的特殊字符,所以需要转义字符\才能表示其真实含义,但是在(())和 [ ] 中不需要转义字符。


七、特殊的Shell变量

7.1 环境变量

1、由系统提前创建,用来设置用户的工作环境
2、配置文件: /etc/profile、~/.bash_profile
注:~是当前用户

常见的环境变量
PWD、PATH、USER、SHELL、HOME

在这里插入图片描述


7.2 只读变量

用于变量值不允许被修改的情况
在这里插入图片描述


7.3 位置变量

表示为$n,n为1~9之间的数字
./myprog.sh one two three four five six
在这里插入图片描述


7.4 预定义变量

$#:命令行中位置变量的个数
$*:所有位置变量的内容
$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错
$0:当前执行的进程 / 程序名

注:在shell中,$ @和$ * 都表示命令行所有参数(不包括0 ),
但是$ *将命令行的所有参数看成一个整体,
而$@则区分各个参数

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值