Linux运维实战:CentOS7.6操作系统(Shell脚本基础)

本文介绍了Shell脚本的基础知识,包括Shell的基本语法、变量及其应用。详细讲解了Shell变量的设置规则、分类,以及如何创建和执行Shell脚本。此外,还讨论了命令引用、嵌套使用、单引号与双引号的区别,以及数学运算等内容,是Linux运维人员掌握Shell脚本的重要教程。
摘要由CSDN通过智能技术生成

第19章 Shell脚本基础

19.1 Shell基本语法

19.1.1 什么是Shell

Shell是一个命令解释器,在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。这种对话方式可以是交互式的,也可以是非交互式的,如图19-1所示。

在这里插入图片描述
图19-1 Shell与内核交互

我们所输入的命令计算机是不能识别的,这时就需要一种程序来对命令进行翻译,变成计算机能识别的二进制程序,同时又把计算机生成的结果返回给我们。

19.1.2 编程语言分类

编程语言主要有低级语言和高级语言。

1.低级语言

低级语言分为机器语言和汇编语言。机器语言是二进制语言,仅是0和1这两个数字的排列组合,也是机器唯一能够识别的语言,因此称为机器语言。汇编语言是符号语言,使用助记符来代替操作码,也就是用符号代替机器语言的二进制码。机器语言和汇编语言都是面向机器的语言。

2.高级语言

高级语言是比较接近自然语言或者说人类语言的一种编程语言,用人们能够容易理解的方式进行程序编写。高级语言分为静态语言和动态语言。静态语言是编译型语言,如C、C++、Java,该类语言有一个程序开发环境,不需借助额外的二进制程序,可以编写代码,代码编写完成后,需要编译器将其直接转换成二进制后即可独立运行。

编译器可以将人类理解的语言翻译成机器理解的语言。

GCC是一套功能强大、性能优越的编译器,它是GNU计划的代表作品之一。GCC是Linux平台下最常用的编译器。GCC的原名为GNU C Compiler,即GNU C语言编译器,随着GCC支持的语言越来越多,它的名称也逐渐变成了GNU Compiler Collection。

动态语言是解释型语言,如PHP、Shell、Python、Perl。动态语言在某个代码编写完成以后,不需转换成二进制格式,而是借助解释器在代码执行当中解释转换(边解释,边执行)。

19.1.3 什么是Shell脚本

一般脚本的命名都是以.sh结尾的,实际上,Linux系统不以扩展名识别文件类型,但为了统一标准,尽量使用.sh结尾。

!/bin/bash的作用是告诉脚本使用的是哪种Shell作为命令解释器。如果不指定Shell,则以当前Shell作为执行的Shell。

在Shell中以“#”开头,表示整行被当作一个注释,执行时被忽略。

(2)创建Shell程序的步骤如下。

① 创建一个包含命令和控制结构的文件。② 修改这个文件的权限使它可以执行,使用chmod +x test.sh。③ 检测语法错误。④ 执行./test.sh

(3)Shell脚本的执行通常有以下几种方式。

/root/test.sh(使用绝对路径执行脚本)或者 ./test.sh(当前路径下执行脚本的话,要有执行权限 chmod +x test.sh)。

bash test.shsh test.sh(直接使用解释器执行脚本,这种方式可以不对脚本文件添加执行权限)。

source test.sh(可以没有执行权限)。

sh < test.sh或者cat test.sh |sh(bash)

19.2 Shell变量及运用

19.2.1 Shell变量

变量是Shell传递数据的一种方法,是用来代表每个值的符号名。可以把变量当成一个容器,通过变量,可以在内存中存储数据,也可以在脚本执行中进行修改和访问存储的数据。

1.变量的设置规则如下

① 变量名通常是大写字母,它可以由数字、字母和下画线组成。注意变量名区分大小写,且不能以数字开头。

② “=”用于给变量赋值,等号两边不能有空格。(除了变量赋值,if判断的时候需要空格)

③ 变量存储的数据类型是整数值字符串值

④ 在对变量赋予字符串值时,建议用引号将其括起来。因为如果字符串中存在空格,需要使用单引号或双引号将整个字符串括起来。

⑤ 要对变量进行调用,可以在变量名前加“$”。

⑥ 如果需要增加变量的值,可以进行变量值的叠加。不过变量需要用双引号括起来,如“$变量名”或用花括号括起来如 ${变量名}

2.按照变量的作用可以分成以下4类

① 用户自定义变量。

② 环境变量:这种变量中主要保存的是与系统操作环境相关的数据。

③ 位置参数变量:这种变量主要用来向脚本传递参数或数据,变量名不能自定义,变量作用是固定的。

④ 预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量的作用也是固定的。

3.按照变量的作用域可以把变量分成两类:全局变量和局部变量

① 局部变量是Shell程序内部定义的,其使用范围仅限于定义它的程序,对其他程序不可见,包括用户自定义变量、位置变量和预定义变量。

② 全局变量是环境变量,其值不随Shell脚本的执行结束而消失。

例19.3:变量值的叠加,使用“${}”。

$name是${name}的简化版本,但是在某些情况下,还必须使用花括号括起来的方式消除歧义并避免意外的结果。
在这里插入图片描述

19.2.3 命令的引用,使用“$()”或反

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值