您的位置:首页 > 运维架构 > Shell

Shell编程之数组、字符串基本操作

2015-01-13 11:08 204 查看
数组

概念

一对括号表示是数组,数组元素用“空格”符号分割开,格式为: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//\//\\} #${变量/查找/替换值} 一个“/”表示替换第一个,”//”表示替换所有,当查找中出现了:”/”请加转义符”\/”表示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: