变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则。
在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。
这意味着,Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。例如在C语言或者 C++ 中,变量分为整数、小数、字符串、布尔等多种类型。
定义变量
Shell 支持以下三种定义变量的方式:
variable=value
variable='value'
variable="value"
Shell 变量的命名规范和大部分编程语言都一样:
- 变量名由数字、字母、下划线组成;
- 必须以字母或者下划线开头;
- 不能使用 Shell 里的关键字(通过 help 命令可以查看保留关键字)。
使用变量
使用一个定义过的变量,只要在变量名前面加美元符号$即可,如:
user="abc"
echo $user
echo ${user}
变量名外面的花括号{ }是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:
skill="Java"
echo "I am good at ${skill}Script"
如果不给 skill 变量加花括号,写成echo "I am good at $skillScript",解释器就会把 $skillScript 当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。
赋值变量
在 Shell 中,可以使用以下语法给已经定义的变量赋值:
variable_name=new_value
例如,将名为 my_var 的变量的值从 hello 修改为 world 可以执行以下命令:
my_var=world
需要注意的是,在进行赋值操作时,变量名同样不需要使用 $ 符号。
删除变量
在 Shell 中,可以使用以下语法删除已经定义的变量:
unset variable_name
例如,删除名为 my_var 的变量可以执行以下命令:
unset my_var
需要注意的是,删除变量时不需要在变量名前面加上 $ 符号。