变量命名:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
无效的变量命名:
?var=123
user*name=runoob
赋值变量:
1:
直接赋值
name="lily"
2:
利用语句赋值
for i in `ls /boot`;do echo $i ; done
#将/boot目录下的文件名循环赋值给i并打印,可以用$(ls /boot)代替`ls /boot`
3:
间接赋值read -p
[root@test ~]# read -p "your name?" name1 name2
your name?666 888
[root@test ~]# echo $name1 $name2
666 888
使用变量
利用$var或者${var} 调用变量,加{}可以帮助解释器识别变量的边界。
如$varlog会找varlog的变量,${var}log就没问题。
只读变量
var=abc readonly abc var=ab -bash: i: readonly variable #报错,只读变量的值不能被改变和删除
删除变量
unset var #变量前不加$符
***************************************
变量类型-字符串
1:
单引号''
name='my name is $i' echo $name my name is $i
eg:echo $name 会显示 my name is $i,单引号内的变量不会被读取
单引号字符串的限制:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
2:
双引号""
name="my name is $i"
双引号的优点:
双引号里可以有变量
双引号里可以出现转义字符
3:
获取字符段长度 ${#var}
name=sunny echo ${#name} 5 #返回字符段长度5
4:
提取字符串,从第n个字符开始提取m个字符${var:n:m}
name="my name is sunny" echo ${name:11:5} #从第11个字符起提取5个字符。 sunny
**********************************************************************
变量类型-数组
1:
定义数组
数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
array={v1 v2 v3 v4} 或者 array=( v1 v2 v3 )
2:
读取数组,注意下标由0开始编号
${数组名[下标]}
echo ${array[0]} v1
获取数组的所有元素
echo ${array[@]}
# 取得数组元素的个数
length=${#array_name[@]}
# 取得数组单个元素的长度
length=${#array_name[@]}