Shell 变量

Shell 变量

定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:var1="hello world"

变量名称规则

1、命名只能使用英文字母,数字和下划线,首个字符不能以数字开头

2、中间不能有空格,可以使用下划线(_)

3、不能使用标点符号

4、不能使用bash里的关键字

Shell变量赋值

除了显式地直接赋值,还可以用语句给变量赋值:

result=$(ls -la ./)或者 result=`ls -la ./`


定义变量

使用变量

使用一个定义过的变量,在变量名前加美元符号

Shell 变量_第1张图片
使用变量

使用变量重点

echo ${imooc} (变量名外面的花括号是可选的,帮助解释器识别变量的边界)

Shell 变量_第2张图片
$(变量)使用

运行结果为:

执行结果

已定义的变量,可以被重新定义

Shell 变量_第3张图片
重新定义变量

运行结果为:

执行结果

只读变量,防止变量被污染

使用readonly命令可以将变量定义为只读变量,只读变量的值不能被改变。

imooc="imooc.com"

readonly imooc

imooc="www.imooc.com"  (报错)

Shell 变量_第4张图片
只读变量

运行结果为:

Shell 变量_第5张图片
执行结果

删除变量

使用unset命令可以删除变量:

imooc="imooc.com"

unset imooc

变量被删除后不能再次使用

unset命令不能删除只读变量

变量作用域

作用域:

局部变量(在当前shell种有效,其他Shell启动的程序无法访问)

环境变量(所有程序均可访问)

变量数据类型

字符串:

可以用单引号,可以用双引号,可以不用引号

单双引号的区别跟PHP类似

单引号不解析变量

单引号字符串不能出现单独一个的单引号(对单引号使用转译符后也不行),但可成对出现,作为字符串拼接使用

双引号里可以有变量,可以出现转义字符


Shell 变量_第6张图片
数据类型

运行结果:

Shell 变量_第7张图片
执行结果

转义字符:

Shell 变量_第8张图片
转义字符

运行结果:

执行结果

字符串拼接:

"hello,"$your_name"!"

字符串长度

echo ${#string}

字符串长度

运行结果:

执行结果

字符串截取

echo ${string:1:4} 1代表从哪里开始,4代表截取的长度,字符串索引起始位为0

字符串截取
执行结果

字符串查找

echo `expr index "$string" i` expr index是固定写法 i代表要查找的字符 查找出的索引是从1开始

字符串查找


执行结果

数组

bash支持一维数组(不支持多维数组),并且没有限定数组的大小

类似于C语言,数组元素的下标由0开始编号。获取数组种的元素要利用下标,下标可以是整数或算数表达式,其值应大于或等于0

在Shell 中,用括号来表示数组,数组元素用空格符号分割开

数组名=(值1 值2 ...值n)

也可以不使用连续的下标,而且下标的范围没有限制

Shell 变量_第9张图片
数组定义

读取数组 :${数组名[下标]}

使用@符号可以获取数组中的所有元素 echo ${array_name[@]}

获取数组长度:length=${#array_name[@]}

获取数组单个元素的长度: length=${array_name[n]}

Shell 注释

单行注释 #

多行注释

:<

你可能感兴趣的:(Shell 变量)