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

 

posted @ 2019-09-18 14:47  Forever77  阅读(483)  评论(0编辑  收藏  举报