一、什么是变量
变量就是程序设计语言中的一个可以变化值的量。(可以命名的内存空间)
变量名 变量值 变量数据类型( 整形 char 浮点类型 布尔类型)
但shell弱类型语言不需要定义变量类型
二、变量的命名
在Shell中,变量名可以由字母、数字或者下划线组成,并且只能以字母或者下划线开头。
常见的命名方法:
1.驼峰法:
小驼峰法:第一个单词以小写字母开始,从第二个单词开始以后的每个单词的首字母都采用大写字母。eg:myFirstName
大驼峰法:大驼峰法把第一个单词是大写,后面的单词首字母也大写。 eg:MYLastName
2.匈牙利命名法:变量名=属性+类型+对象描述(标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途 ) eg:m_lpszStr
属性部分:g_ 全局变量 c_ 常量 m_ c++类成员变量 s_ 静态变量
类型部分: 数组 a 指针p 函数fn_
3.下划线命名法:eg:file_name.
三、变量的分类
1)本地变量 2)环境变量 3)位置变量 4)预定义变量 5)只读变量
1.本地变量(自定义变量)----仅在当前终端生效
2.环境变量 定义环境变量-----在当前终端和当前终端的子终端下生效
(1)定义变量:
本地变量 :变量名=变量值 变
环境变量:将自定义变量转换成环境变量
方法一 export back_dir2=/home/backup
方法二 back_dir1=/home/backup export back_dir1
引用变量:$变量名 或 ${变量名}
查看变量:echo $变量名 set(所有变量:包括自定义变量和环境变量)
env printenv (环境变量)
取消变量:unset 变量名
作用范围:仅在当前shell中有效
补充:查看后台进程:
[root@localhost.localdomain ~]#jobs
[root@localhost.localdomain ~]#ps -aux | grep sleep
5.只读变量 ---默认不可以取消,只能做变量值的引用操作
只读变量:
将变量配置成为 readonly 类型,该变量不可被更改内容,也不能 unset
定义方法:
方法一: readonly [-fap] [变量定义] -f 定义只读函数 -a 定义只读数组变量 -p 显示系统中全部的变量列表
方法二: declare –r 变量定义
取消变量:
unset 选项:-f 取消的是函数 -v 取消的是变量(数组)
declare命令
+/- "-"可用来指定变量的属性,"+"则是取消变量所设的属性。
-f 仅显示函数。
-r 将变量设置为只读。(=readonly)--既可以指定也可以查看
-x 指定的变量会成为环境变量,可供shell以外的程序来使用。
-i [设置值]可以是数值,字符串或运算式。(定义变量类型)
[root@192 scripts]# declare i B ---声明了变量类型,则不能转换,必须手动取消
[root@192 scripts]# declare +i B ---取消指定的变量类型
四、变量的赋值
变量的四种赋值方式:
(1) 直接赋值 name=
(2)读取变量赋值法,read命令 read v1
read 命令常用参数:
-p “提示语句:”屏幕打印出一行提示语句。
-n 字符个数设置read命令计数输入的字符。当
-t 等待时间 计时输入
-s 关闭回显
(3) 位置变量赋值法 ,使用命令行参数 ($1 $2 $3 ..) name=$1
(4)命令返回结果赋值,使用命令的输入 username=$(whoami)
注:如果在命令行进行赋值操作的话使用set --
五、变量的作用域
全局变量 局部变量 --看有没有local(有则局部(另外,函数的参数也是局部变量 ),无则全局)
在脚本中定义的变量都是全局变量,其作用域为从被定义的地方开始,一直到Shell脚本结束或者被删除。 与全局变量相比,局部变量的使用范围较小,通常仅限于某个程序段访问,例如函数内部
六、变量的运算
算数运算符
算数/逻辑/比较运算符 | 说明/含义 |
---|---|
+、- | 加法(或正号)、减法(或负号) |
*、/、% | 惩罚、除法、取余(取模) |
** | 幂运算 |
++、-- | 自增和自减 |
!、&&、|| | 逻辑非(取反)、逻辑与(and)、逻辑或(or) |
<、<=、>、>= | 比较符号(小于、小于等于、大于、大于等于) |
==、!=、= | 比较符号(相等、不相等;对于字符串,=可以表示相等于) |
<<、>> | 向左移位、向右移位 |
~、|、&、^ | 按位取反、按位或、按位与、按位异或 |
=、+=、-=、*=、/=、%= | 赋值运算符,例如 a+=1相当于a=a+1,a-=1相当于a=a |
算数 运算命令
只有awk,bc(结果怪怪的)可以做小数运算
expr表达式和运算符至少一个空格隔开
实现变量运算: $(())、$[] let 、declare -i (前四个变量运算)
bc、 expr、 awk(直接输出显示)
eg: