一、变量命名规则
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
二、变量的定义与使用
- a=1 内容为简单连续字符串和数字时,可以这样用
- a=‘1’ 这种定义单引号里什么内容输出就是什么内容
- a=“1” 会把双引号里的变量或者命令解析了再输出出来
注:当变量名后面连接有其他字符串的时候,必须给变量加上大括号{}
如:
[root@xsnq ~]# a=does
[root@xsnq ~]# echo "I love one girl, but she ${a}n't love me. "
I love one girl, but she doesn't love me.
//没有加{}的话
[root@xsnq ~]# echo "I love one girl, but she $an't love me. "
I love one girl, but she 't love me.
设置变量的注意事项:
- 等号两侧都不能含有任何空格!
- 若变量值必须有空格,则可以使用单引号 或 双引号将变量值包裹起来,但其中意义会发生改变。
- 从键盘读取变量:read
read [-p 提示语] [-t 时间] 变量名
-p:后面加上提示语
-t:后加上秒数,表示等待用户输入的时间
例,
[root@xsnq ~]# read -p 博主 -t 5 a
博主xsnq
[root@xsnq ~]# echo $a
xsnq
三、删除变量
unset 变量名
- 变量被删除后不能再次使用。
- unset 命令不能删除只读变量。
扩展,
只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
下面的例子尝试更改只读变量,结果报错:
[root@xsnq ~]# fact="She doesn't love me"
[root@xsnq ~]# readonly fact
[root@xsnq ~]# fact="She loves me."
//结果如下
-bash: fact: 只读变量
四、变量类型
- 局部变量
局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。 - 环境变量
所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。
- 使用 export 命令可以查看当前系统的环境变量
- shell变量
shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
常用的如:PWD、UID、SHLVL、REPLY、RANDOM、SECONDS、IFS、PATH、HOME
本文出现任何错误,请留言私信批评指正。