一.格式介绍
1.目标
能够使用字符串的三种方式
掌握3种方式的区别
能够获取字符串的长度
2.介绍
字符串(string) 就是一系列字符的组合,是shell编程中最常用的数据类型之一。
3.字符串3种格式
- 单引号方式 e.g. var1 = ‘abc’
- 双引号方式,推荐 e.g. var1 = “abc”
- 不用引号方式 e.g. var1 = abc
4.3种格式的区别
1.使用单引号’‘的字符串:
任何字符都会原样输出,在拼接字符串中使用变量是无效的。
var1 = abc
var2 = '${var1} hello'
echo $var2
# ${var1} hello
2.使用双引号”“的字符串:
如果包含变量,那么该变量会被解析得到值,而不是原样输出。
字符串中还可以出现双引号的子字符串,但是需要转义。
var1 = abc
var3 = "${var1} hello"
echo $var3
# abc hello
echo "hello \"${var1}\""
# hello "abc"
3.不被引号包围的字符串
不被引号包围的字符串中出现变量也会被解析,这点和双引号的用法一样。
字符串中不能出现空格,否则空格后边的字符串会作为其他命令解析。
var1 = abc
var4 = ${var1}hello
echo $var4
# abchello
var5 = ${var1} hello
echo $var5
# bash:hello: 未找到命令
5.获取字符串长度
语法:${#字符串变量名}
var1 = abc
echo ${#var1}
# 3
二.拼接
1.目标
掌握shell字符串拼接
2.字符串拼接方式
- 无符号拼接
- 双引号拼接
- 混合拼接
2.1 无符号拼接
var1 = abc
var2 = "hello world"
var3 = ${var1}${var2}
echo $var3
# abchello world
2.2 双引号拼接(推荐)
var1 = abc
var2 = "hello world"
var3 = "${var1}${var2}"
echo $var3
# abchello world
2.3 混合拼接
var1 = abc
var2 = "hello world"
var3 = ${var1}"&"${var2}
echo $var3
# abc&hello world
三.字符串截取
1.目标
掌握字符串截取的常用格式
2.语法
var1 = "welcome to world"
# 从左侧第0个开始,截取2个字符
echo ${var1:0:2}
# we
# 从左侧第11个开始,截取后边全部字符
echo ${var1:11}
# world
# 从右侧第5个开始,截取后边2个字符
echo ${var1:0-5:2}
# wo
# 截取从左侧第一次出现的字符l右边的所有字符
echo ${var1#*l}
# come to world
# 截取从左侧最后一次出现字符e右边的所有字符
echo ${var1##*e}
# to world
# 截取从右侧第一次出现的字符e左边的所有字符
echo ${var1%e*}
# welcom
# 截取从右侧最后一次出现的字符e左边的所有字符
echo ${var1%%e*}
# w
四.shell索引数组变量:定义-获取-拼接-删除
1.目标
- 能够定义shell数组
- 能够获取shell数组数据
- 能够进行shell数组的拼接,删除
2.介绍
shell支持数组(Array),数组是若干数据的集合,其中的每一份数据都称为数组的元素。
注意:Bash Shell 只支持一维数组,不支持多维数组
3.数组的定义
在shell中,用括号()来表示数组,数组元素中间用空格来分隔,语法为:
array_name=(item1 item2 ...) # 方式1
array_name=([下标1]=item1 [下标2]=item2 ...) # 方式2
注意:赋值号 = 两边不能有空格
4.演示
nums=(29 100 "www.baidu.com")
arr[6]=100
arr2=([0]=1 [3]="abc")
5.数组的获取
- 通过下标获取元素值,index从0开始
${arr[index]}
注意使用 { }
- 获取值同时赋值给其他变量
item=${arr[index]}
- 使用 @ 或 * 可以获取数组中的所有元素
${arr[@]}
${arr[*]}
- 获取数组的长度或个数
${#arr[@]}
${#arr[*]}
- 获取数组指定元素的字符长度
${#arr[索引]}
6.数组的拼接
6.1 介绍
shell数组拼接(数组合并),就是将两个数组连接成一个数组
6.2 语法
使用 @ 和 * 获取数组所有元素之后进行拼接
array_new=(${array1[@]} ${array2[@]} ...)
array_new=(${array1[*]} ${array2[*]} ...)
6.3 演示
nums1=(29 22)
nums2=("ff" "cc")
nums3=(${nums1[*]} ${nums2[*]})
echo ${nums3[*]}
# 29 22 ff cc
7.数组的删除
7.1 介绍
删除数组指定元素数据和删除整个数组数据
7.2 语法
- 删除数组指定元素数据
unset array_name[index]
- 删除整个数组
unset array_name
7.3 演示
nums=(29 22 ff cc)
unset nums[1]
echo ${nums[*]}
# 29 ff cc
unset nums
echo ${nums[*]}
# 为空