Shell基础入门

2021/01/11 Linux Shell

Shell基础入门

变量和引用

变量是任何一门编程语言和脚本语言的核心,而Shell脚本使用变量就需要引用,因此,引用和变量密切相关。

变量

变量用于保存有用信息,如路径名、文件名、数字等,Linux用户使用变量定制其工作环境,使系统获知用户相关的配置。变量本质上是存储数据的一个或多个计算机内存地址。

变量可分为:本地变量、环境变量和位置参数。本地变量是仅可以在用户当前Shell生命期的脚本中使用的变量,本地变量随着Shell进程的消亡而无效,本地变量在新启动的Shell中依旧无效,它类似于C、C++、Java等编程语言中局部变量的概念。环境变量则适用于所有由登录进程所产生的子进程,简言之,环境变量在用户登录后到注销之前的所有编辑器、脚本、程序和应用中都有效。位置参数也属于变量,它用于向Shell脚本传递参数,是只读的。

变量替换和赋值

Shell的三类变量中,位置参数是只读变量,因此,没有变量的替换和赋值操作,其他两类变量都存在上述操作。

变量是某个值的名称,引用变量值就称为变量替换,$符号是变量替换符号,如variable是变量名,那么,$variable就表示变量的值。将值赋给某个变量名就称为变量赋值,变量赋值有两种格式,如下所示:

variable= value
${variable= value}

对于变量赋值,有以下三点说明:

  • 等号的两边可以有空格,这不影响赋值操作;
  • 如果值(value)中包含空格,则必须用双引号括起来;
  • 变量名只能包括大小写字母(a~z和A~Z)、数字(0~9)、下画杠(_)等符号,并且变量名不能以数字开头,否则视为无效变量名。

利用unset命令可以清除变量的值,命令格式为:

unset 变量名

无类型的Shell脚本变量

Shell脚本变量却是无类型的,这与awk变量是一样的。bash Shell不支持浮点型,只支持整型和字符型,默认情况下,Shell脚本变量是字符型的,同时,字符型的变量还具有一个整型值,为0,尽管如此,bash Shell并不要求在定义一个变量时声明其类型。但是,Shell会根据上下文判断出数值型的变量,并进行变量的算术运算和比较等数值操作。判断标准是变量中是否只包含数字,如果变量只包含数字,则Shell认定该变量是数值型的,反之,Shell认定该变量是字符串。

环境变量

环境变量不仅在Shell编程方面,而且在Linux系统管理方面,都起着非常重要的作用。

定义和清除环境变量

环境变量也是无类型的,环境变量的特殊之处仅在于它的值适用于所有由登录进程所产生的子进程。定义环境变量的格式如下:

ENV-VARIABLE= value
export ENV-VARIABLE

在给环境变量赋值后,用export命令声明一下,就说明此变量为环境变量,环境变量的名称一般由大写字母组成。

如果要列出系统中所有的环境变量,可使用env命令。

位置参数

位置参数(positional parameters)是一种特殊的Shell变量,用于从命令行向Shell脚本传递参数,$1表示第1个参数、$2表示第2个参数等,$0为脚本的名字,从${10}开始,参数号需要用花括号括起来,如${10}、${11}、${100}、…。$*和$@一样,表示从$1开始的全部参数。

退出状态

在Linux系统中,每当命令执行完成后,系统都会返回一个退出状态。该退出状态用一整数值表示,用于判断命令运行正确与否。若退出状态值为0,表示命令运行成功;而退出状态值不为0时,则表示命令运行失败。最后一次执行命令的退出状态值被保存在内置变量“$?”中,所以,可以通过echo语句测试命令是否运行成功。 POSIX规定了几种退出状态和退出状态的含义

内部变量

内部变量是指能够对bash Shell脚本行为产生影响的变量,它们对Shell及其子Shell都有效。因此,内部变量属于环境变量的范畴。

BASH

BASH记录了bash Shell的路径,通常为/bin/bash,内部变量SHELL就是通过BASH的值确定当前Shell的类型。

Search

    微信好友

    博士的沙漏

    Table of Contents