01-Shell 编程规范与变量

Shell 脚本概述:在一些复杂的 Linux 维护工作中,大量重复性的输入和交互操作不仅费时费力,而且容 易出错,而编写一个恰到好处的 Shell 脚本程序,可以批量处理、自动化地完成一系列维护 任务,大大减轻管理员的负担

Shell 的作用

它介于操作系统内核与用户之间,充当 了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执 行的操作传递给内核执行,并输出执行结果

通过/etc/shells 文件可以了解当前系统所支持的 Shell 脚本种类

三条命令:cd /boot/、pwd、ls -lh vml*。执行此脚本文 件后,输出结果与依次单独执行这三条命令是相同的,从而实现了“批量处理”的自动化过程.

直接通过“./first.sh”的方式执行脚本,要求文件本身具有 x 权限,在某些安全系统中可 能无法满足此条件。鉴于此,Linux 操作系统还提供了执行 Shell 脚本的其他方式——指定 某个 Shell 来解释脚本语句,或者通过内部命令 source(或点号“.”)来加载文件中的源代码 执行。例如,使用“sh first.sh”或“. first.sh”也可以执行 first.sh 脚本中的语

Linux 系统中包括大量的 Shell 脚本文件,在学习 Shell 脚本的过程中可用来作为参考, 但应尽量避免直接修改系统内的 Shell 脚本文件,以免导致服务或系统故障

重定向与管道操作

1.重定向操作

1.标准输入(STDIN):默认的设备是键盘,文件编号为 0,命令将从标准输入文件 中读取在执行过程中需要的输入数据

2.标准输出(STDOUT):默认的设备是显示器,文件编号为 1,命令将执行后的输 出结果发送到标准输出文件

3.标准错误(STDERR):默认的设备是显示器,文件编号为 2,命令将执行期间的 各种错误信息发送到标准错误文件。

(1)重定向输出:

重定向输出指的是将命令的正常输出结果保存到指定的文件中,而不是直接显示在显示 器的屏幕上。重定向输出使用“>”或“>>”操作符号,分别用于覆盖或追加文件。

重定向输入:

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

(3)错误重定向

错误重定向指的是将执行命令过程中出现的错误信息(如选项或参数错误等)保存到指 定的文件,而不是直接显示在屏幕上。错误重定向使用“2>”操作符,其中“2”是指错误文件的 编号(在使用标准输出、标准输入重定向时,实际上省略了 1、0 编号)。

2.管道操作

管道(pipe)操作为不同命令之间的协同工作提供了一种机制,位于管道符号“|”左侧的 命令输出的结果,将作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。 在 Shell 脚本应用中,管道操作通常用来过滤所需要的关键信息。例如,使用 grep 命 令查询使用/bin/bash 作为 Shell 的系统用户名时,会输出符合条件的整行内容,在此基础上 可以结合管道操作与 awk 命令做进一步过滤,只输出用户名和登录 Shell 列

Shell 变量的作用、类型

各种 Shell 环境中都使用到了“变量”的概念。Shell 变量用来存放系统和用户需要使用的 特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应变化。通过使 用变量,Shell 程序能够提供更加灵活的功能,适应性更强。 常见 Shell 变量的类型包括自定义变量、环境变量、只读变量、位置变量、预定义变量。 本节将分别介绍这四种 Shell 变量的使用

自定义变量

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

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

2.查看和引用变量的值

通过在变量名称前添加前导符号“$”,可以引用一个变量的值。使用 echo 命令可以查看 变量,可以在一条 echo 命令中同时查看多个变量值。

当变量名称容易和紧跟其后的其他字符相混淆时,需要添加大括号“{}”将其括起来,否 则将无法确定正确的变量名称。对于未定义的变量,将显示为空值

3.变量赋值的特殊操作

(1)双引号(”)

(2)单引号(‘)

(3)反撇号(`)

(4)read 命令

4.设置变量的作用范围

默认情况下,新定义的变量只在当前的 Shell 环境中有效,因此称为局部变量。当进入 第 13 页 共 19 页 子程序或新的子 Shell 环境时,局部变量将无法再使用。例如,直接执行 Bash 进入一个新 的子 Shell 脚本后,将无法引用父级 Shell 环境中定义的 Product、Version 等变量

5.数值变量的运算

Shell 变量的数值运算多用于脚本程序的过程控制(如循环次数、使用量比较等,后续 章节会介绍)。在 Bash Shell 环境中,只能进行简单的整数运算,不支持小数运算。整数 值的运算主要通过内部命令 expr 进行(必须有一个空格)

特殊的 Shell

1.环境变量

环境变量指的是出于运行需要而由 Linux 系统提前创建的一类变量,主要用于设置用户 的工作环境,包括用户宿主目录、命令查找路径、用户当前目录、登录终端等。环境变量的 值由 Linux 系统自动维护,会随着用户状态的改变而改变

在 Linux 系统中,环境变量的全局配置文件为/etc/profile,在此文件中定义的变量作用 于所有用户。除此之外,每个用户还有自己的独立配置文件(~/.bash_profile)。若要长期 变更或设置某个环境变量,应在上述文件中进行设置。例如,执行以下操作可以将记录的历 史命令条数改为 200 条(默认为 1000 条),只针对 root

只读变量:Shell 变量中有一种特殊情况,一经设定,其值是不可改变的,这种变量被称为只读变 量。

3.位置变量:为了在使用 Shell 脚本程序时,方便通过命令行,为程序提供操作参数,Bash 引入了 位置变量的概念

预定义变量:预定义变量是由 Bash 程序预先定义好的一类特殊变量,用户只能使用预定义变量,而 不能创建新的预定义变量,也不能直接为预定义变量赋值

1.$#:表示命令行中位置参数的个数

2.$*:表示所有位置参数的内容

3.$?:表示前一条命令执行后的返回状态,返回值为 0 表示执行正确,返回任何非 0 值均表示执行出现异常

4.$0:表示当前执行的脚本或程序的名称

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值