首页 > 编程笔记

Shell变量的定义和使用

变量是所有的编程语言必不可少的组成部分,变量常常用来存放各种数据。

和一些编程语言不同的是,脚本语言在定义变量时可以直接赋值而不需要指明类型 Shell 就是如此。Shell 给变量赋值时,实际上就是定义了变量,在 Linux 支持的所有 Shell 中,都可以用赋值符号(=)为变量赋值。

Shell变量的定义

变量是计算机语言中能储存计算结果或能表示值的内存单元,其中存放的值是可以改变的。当 Shell 脚本需要保存文件名或数字时,就把文件名或数字存放在一个变量中,而每个变量都会有自己的名字,所以很容易就能找到它。

在 Shell 中,定义变量的语法格式如下:

[root@bogon ~]# name=[value]


如果 value 没有指定为何值,变量将被赋值为空字符。变量名称为字母、下划线以及数字的组合,但不能以数字作为首字母开头;变量名称也没有要求大小写,但建议统一使用大写或小写来防止出错。

定义变量的方式通常有以下 3 种:

[root@bogon ~]# name=value
[root@bogon ~]# name='value'
[root@bogon ~]# name="value"


在 Bash Shell 中,每一个变量的值都是字符串,无论在给变量赋值时有没有使用引号,值都会以字符串的形式存储。例如,定义变量 name 的值为 sc,通过 echo 命令来查询变量的值。

[root@bogon ~]# name=sc
[root@bogon ~]# echo $name
sc

变量定义后可以使用 <$变量名称> 来调用变量的值。

变量可以通过变量名访问,变量名的命名规则如下:
  1. 变量名可以由字母、数字和下画线组成,但是不能以数字开头。
  2. 在 Bash 中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。
  3. 变量用等号“=”连接时,等号左右两侧不允许有空格。这是 Shell 语言特有的格式要求。在绝大多数的其他语言中,“=”左右两侧是可以有空格,但是在 Shell 中命令的执行格式是“命令[选项] [参数]”,如果在“=”左右两侧加入空格,那么 Linux 系统会报错。
  4. 变量值中如果有空格,则需要使用单引号或双引号。例如:test=“hello world!”。双引号括起来的内容“$”和反引号者都拥有特殊含义,而单引号括起来的内容都是普通字符。
  5. 在变量值中,可以使用转义符“\”。
  6. 如果需要增加变量值,那么可以进行变量叠加。变量叠加可以使用两种格式:“$变量名”或 ${变量名}。
  7. 如果要把命令的执行结果作为变量值赋予变量,则需要使用反引号或 $() 包含命令。
  8. 环境变量名建议大写,便于区分。

Shell变量的使用

使用一个已经定义过的变量,只需在变量名前面加美元符号“$”。例如:

[root@bogon ~]$ name='http://www.weixueyuan.net/linux/'
[root@bogon ~]$ echo $name
http://www.weixueyuan.net/linux/


变量名外面的花括号 {} 是可选的,可以加也可以不加,加花括号是为了帮助解释器识别变量的边界。例如:

[root@bogon ~]$ name='http://www.weixueyuan.net/'
[root@bogon ~]$ echo "I am good at ${name}"
I am good at http://www.weixueyuan.net/

优秀文章