Shell 变量

2021-09-21 17:28:04
admin
1451
最后编辑:admin 于 2021-09-26 10:19:40

变量类型

Shell是弱类型语言。

实际上,在Shell中,一切变量都是字符串类型。无论你给变量赋值时有没有带引号,值都会以字符串的形式存储。

定义变量

定义变量的格式如下:

variable=value
variable='value'
variable="value"

Shell 变量的命名规范:

  • 变量名由数字、字母、下划线组成,数字不能打头。

  • 变量名长度不超过20个字符。

  • 变量名区分大小写。

注意:

  • 赋值号 = 的左右两边不能有空格!

  • 变量在声明/赋值时无$,在引用时才有$。

  • 变量值中如果有空格,则必须使用引号引起来,但引号不会作为值的一部分。如 hw="Hello World"。

命令替换

Shell 支持将命令的执行结果赋值给变量,以供在脚本中使用。常见的有以下两种方式:

variable=`command`
variable=$(command)

第一种方式把命令用反引号 ``(位于 Esc 键的下方)包围起来,反引号和单引号非常相似,容易混淆,所以不推荐使用这种方式。

第二种方式把命令用$()包围起来,区分更加明显,所以推荐使用这种方式。

单引号和双引号的区别:

单引号里的内容会被原样输出,不能解析变量、命令、转义字符。

双引号可以解析变量、命令、转义字符。

使用变量

使用一个定义过的变量,只要在变量名前面加美元符号$即可,如:

author="张三丰"
echo $author
echo ${author}

注:变量中的$表示获取变量的值,只有在取值的时候才使用。定义和赋值变量时,无需使用$。

变量名外面的花括号{ }是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

a="Java"
echo "I am learning ${a}script"

输出结果:I am learning Javascript

如果不给 a 变量加花括号,写成echo "I am learning $ascript",解释器就会把 $ascript 当成一个变量(其值当然为空)。

注:引用变量时,给变量名加上花括号{ },这是个良好的编程习惯。

Shell 中多个字符串拼接时,直接写在一起即可,Shell 没有特定的字符串连接符。

a=Hello
b=World
echo $a$b

输出结果:HelloWorld

环境变量

Shell中的环境变量全部使用大写字母表示。shell维护着一组环境变量,用来记录特定的系统信息(set命令可查看)。比如 HOME、USER、UID……

在Shell脚本中,通过在环境变量前加 $ 符来引用这些环境变量。如:$USER   $UID

#!/bin/bash
echo $HOME

输出结果:/home/gavinhsueh