首页 > 代码库 > Shell编程之数组、字符串基本操作
Shell编程之数组、字符串基本操作
概念
一对括号表示是数组,数组元素用“空格”符号分割开,格式为:array=(value0 value1 value2 value3 ...),此时数组的下标默认是从0开始的
基本操作
1.arr=(1 2 3 4 5)
2.arr=(
1
2
3
)
3.echo ${#arr[@]},${#arr[*]} #获取数组长度,用${#数组名[@或*]} 可以得到数组长度
4.echo ${arr[0]},${arr[1]},${arr[2]} #获取数组元素的值
5.echo ${arr[*]} ${arr[@]} #获取数组所有的值,用${数组名[下标]} 下标是从0开始 下标是:*或者@ 得到整个数组内容
6.arr[1]=100 #给数组元素赋值,如果下标不存在,自动添加新一个数组元素
7.unset arr[1] #删除数组中的某个元素
8.unset arr #删除整个数组
8.echo ${arr[@]:0:2} #数组切片,直接通过 ${数组名[@或*]:起始位置:长度} 切片原先数组,返回是字符串,中间用“空格”分开
9.arr_new=(${arr[@]:0:2}) #数组切片,直接通过 ${数组名[@或*]:起始位置:长度} 切片原先数组,返回是字符串,中间用“空格”分开,因此如果加上”()”,将得到切片数组,返回的是新的数组
10.echo ${arr[@]/1/11} #${数组名[@或*]/查找字符/替换字符} 该操作不会改变原先数组内容,如果需要修改,可以重新定义数据
11.for value in ${arr[*]};
do
echo value
done
字符串
定义:
${var} 变量var的值, 与$var相同
${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值,如果变量var已经被设置的话, 那么其值就是$var
${var:-DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值,如果变量var已经被设置的话, 那么其值就是$var
${var=DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值,如果变量var已经被设置的话, 那么其值就是$var
${var:=DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值,如果变量var已经被设置的话, 那么其值就是$var
${var+OTHER} 如果var声明了, 那么其值就是$OTHER, 否则就为null字符串
${var:+OTHER} 如果var被设置了, 那么其值就是$OTHER, 否则就为null字符串
${var?ERR_MSG} 如果var没被声明, 那么就打印$ERR_MSG,如果变量var已经被设置的话, 那么其值就是$var
${var:?ERR_MSG} 如果var没被设置, 那么就打印$ERR_MSG,如果变量var已经被设置的话, 那么其值就是$var
${!varprefix*} 匹配之前所有以varprefix开头进行声明的变量
${!varprefix@} 匹配之前所有以varprefix开头进行声明的变量
例如
1.echo ${abc-‘ok‘}
2.echo ${abc=‘ok‘}
基本操作
1.echo ${#string} #获取字符串的长度,${#变量名}得到字符串长度
2.echo ${string:5},${string:5:10},${string} #字符串切片,${变量名:起始:长度}得到子字符串
3.echo ${string#*/} #${变量名#substring正则表达式}从字符串开头开始配备substring,删除匹配上的表达式
4.echo ${string%/*} #${变量名%substring正则表达式}从字符串结尾开始配备substring,删除匹配上的表达式
5.echo ${test//\//\\} #${变量/查找/替换值} 一个“/”表示替换第一个,”//”表示替换所有,当查找中出现了:”/”请加转义符”\/”表示。
Shell编程之数组、字符串基本操作