Shell字符串与数组
Shell字符串
一、字符串设置
字符串可不用引号,也可用单引号和双引号
单引号特点
- 单引号中的变量无效(单引号内嵌套的一对单引号,可以包含变量)
- 单引号中不能出现单个单引号,但可以出现成对的单引号作为字符拼接使用
双引号特点
- 双引号内的变量有效
- 双引号内可以使用转义字符
a=cindy
b="hello,$a"
c="hello,"$a""
d='hello,'$a''
e='hello,$a'
f="hello,'$a'"
g='hello,"$a"'
h="hello,\"$a\"" #双引号内用转义符\
echo $b! $c! $d! $e! $f! $g! $h!
hello,cindy! hello,cindy! hello,cindy! hello,$a! hello,'cindy'! hello,"$a"! hello,"cindy"!
二、字符长度
echo ${#变量名}
a=cindy
echo ${#a}
5 #输出变量a的字符长度为5
三、截取字符串
echo ${变量名:起始位置:截取长度}
a=cindy
echo ${a:1:2}
in #输出第二个字符开始的2个字符
四、获取子字符串
echo `expr index “$变量名” n`
a=cindy
echo `expr index "$a" n`
3 #输出n在cindy中的第三个位置
Shell数组
shell的数组元素以空格分开,数组大小无限制,只支持单维数组
一、数组定义:
- 整体定义:arrayname=(value1 value2 … valuen)
- 单元素定义(下标可不连续,没有定义的下标对应元素默认为空):
arrayname[0]=value1
arrayname[1]=value2
…
arrayname[n-1]=valuen
二、数组输出
输出整个数组
- echo ${数组名[@]}
- echo ${数组名[*]}
输出数组的第n个元素
- echo ${数组名[n-1]}
获取数组长度
- echo ${#数组名[@]}
获取数组的第n个元素的长度
- echo ${#数组名[n-1]}
a=(1 2 name)
b[0]=1
b[1]=2
b[3]=3
echo ${a[@]},${b[@]},${b[2]}
1 2 name,1 2 3, #输出数组a、b、b的第三个元素(默认为空)
echo ${#a[2]},${#b[*]}
4,3 #输出数组a第三个元素的长度,数组b的长度