首页 > 代码库 > 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编程之数组、字符串基本操作