1. 变量定义
定义变量时,变量名不加美元符号($)如:
name=“1234A”
注意事项:
(1)变量名和等号之间不能有空格
(2)变量名的命名遵循如下规则:
首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字,set查找出来也不用)。
2. 变量的赋值:
(1)显式地直接赋值(可以重复为变量赋值):
name=“你好”
(2)语句给变量赋值,如:
name=`expr 2 + 2` #以上语句将 2 + 2的值给变量,注意其中的空格,必须要有
3. 使用变量
使用一个定义过的变量,必须在变量名前面加美元符号,如:
echo $name
echo ${name}
变量名外面的花括号是可选的,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:
name="A"
echo "beicai$name班" #错误写法
echo "beicai${name}班" #正确写法
4. 只读变量(readonly)
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
下面的例子尝试更改只读变量,结果报错:
#!/bin/bash
name="1511A"
readonly name
name="haha"
运行脚本,结果如下:
./readonly: line 4: name: readonly variable。
5. 删除变量(unset)
使用 unset 命令可以删除变量。语法:
unset variable_name
变量被删除后不能再次使用。unset 命令不能删除只读变量。
#!/bin/bash
name="1511A"
unset name
echo $name
以上实例执行将没有任何输出。
6. 变量类型:(局部变量(常用)、环境变量)
运行shell时,会同时存在三种变量:
(1)局部变量 该称为自定义变量。局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
(2)环境变量, 该也称为系统变量。所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
可使用set命令查看:
[root@hadoop01 hadoop]# set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
…