linux变量
一、变量命名
①变量默认为字符串类型,且系统变量名大写,用户自定义变量名小写。
②变量与值之间用等号=连接,=左右两侧都没有空格
③变量名可使用数字、字母、下划线,但不能以数字开头
④变量值如果有空格可以使用单引号或双引号括起来,单引号内的特殊字符为纯文本,双引号内的特殊字符可保持原本特性。
[root@CentOS7-1 linux]# name=Alice [root@CentOS7-1 linux]# myname='My name is $name' #单引号内$就是文本$ [root@CentOS7-1 linux]# echo $myname My name is $name [root@CentOS7-1 linux]# myname="My name is $name" #双引号内$保持本意即表示变量 [root@CentOS7-1 linux]# echo $myname My name is Alice
二、变量设置
1.var=value形式
[root@CentOS7-1 linux]# var1=2 [root@CentOS7-1 linux]# var2=Jack [root@CentOS7-1 linux]# echo $var1 $var2 2 Jack
常规变量可重新赋值,readonly可设定变量为只读,即不可修改值、也不可被删除。
[root@CentOS7-1 linux]# readonly c=7 [root@CentOS7-1 linux]# echo $c;unset c 7 -bash: unset: c: 无法反设定: 只读 variable
2.read读取键盘输入
用法:read [-pt] variable
- -p:后面接提示语
- -t:表示在指定时间内(单位秒)输入,如果超过这个时间没有输入,则read命令直接跳过不执行。
[root@CentOS7-1 linux]# read -p 'Please input your name:' -t 20 name Please input your name:Jane [root@CentOS7-1 linux]# echo $name Jane
3.declare声明
用法:declare [-aixr] variable
- -a:将变量定义为数组array类型
- -i:将变量定义为整数integer类型
- -x:将变量声明为环境变量
- -r:将变量设置为readonly类型,即只读不可更改
[root@CentOS7-1 linux]# var=1+2 [root@CentOS7-1 linux]# echo $var 1+2 [root@CentOS7-1 linux]# declare -i var=1+2 [root@CentOS7-1 linux]# echo $var 3
上述不使用declare声明var为整数时,var为字符串、即1+2整个是一个字符串,声明为整数时1+2才是一个计算式。
三、变量读取
使用$variable获取变量的值,使用echo $variable输出变量的值
四、删除变量
unset variable,unset不能删除readonly变量
[root@CentOS7-1 linux]# declare -i age=18 [root@CentOS7-1 linux]# echo $age 18 [root@CentOS7-1 linux]# unset age
字符串
字符串用单引号或者双引号,如果没有空格也可以不用引号。双引号的优点是可以出现变量和转义字符。
获取字符串长度${#var}
字符串下标从0开始,提取子串${var:m:n}:从下标m开始一共提取n个字符
[root@CentOS7-1 linux]# var='hiworld' [root@CentOS7-1 linux]# echo ${#var} 7 [root@CentOS7-1 linux]# echo ${var:3:2} or
数组
数组用小括号表示,数组中的元素用空格分割开,元素的下标从0开始
定义数组的一般形式:arr=(value0 value1 value2 value3)
获取下标为n的某数组元素:${arr[n]}
获取数组中的所有元素:${var[@]},直接$arr表示数组中的第一个元素
获取数组长度:${#var[@]}或者${#var[*]}
[root@CentOS7-1 linux]# echo $arr ${arr[2]} ${#arr[@]} 1 hi 5 [root@CentOS7-1 linux]# echo ${arr[@]} 1 23 hi 5 hei