linux—shell编程之数组和字符串处理工具
Posted wxxjianchi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux—shell编程之数组和字符串处理工具相关的知识,希望对你有一定的参考价值。
数组:存放多个元素的连续内存空间。
声明数组:bash-4以后支持除默认的0,1,2……还可以自定义索引格式,此类数组称之为“关联数组”
声明索引数组:declare -a NAME
声明关联数组:declare -A NAME
索引数组赋值:
索引方式赋值:ARRAY_NAME[INDEX]=value
ARRAY_NAME=("value1" "value2" ……)
ARRAY_NAME=value([0]="value1" [3]="value2")
交互式赋值:read -a ARRAY_NAME
关联数组赋值
ARRAY_NAME=([INDEX_NAME1]="VALUE1") [INDEX_NAME2]="VALUE2").....)
数组索引:代表元素所在数组的位置属性,从0开始。
格式:数组名[索引]
引用数组中某个元素:${ARRAY_NAME[INDEX]}
当不给出INDEX时默认值为0,引用数组中个某一元素值时一定要使用${}。
数组切片:
${ARRAY_NAME[@]:offset:number}
offset:偏移量,要跳过的元素个数
number:要取出的元素个数;省略number,表示取偏移量之后的所有元素
增加元素:
ARRAY_NAME[${#ARRAY_NAME[*]}]=
${ARRAY_NAME[*]}:数组中元素个数
删除元素:
unset ARRAY[INDEX]
字符串处理:
字符串切片:
${var:offset:number},取字符串的子串。
${var: -length}:从右侧取length个字符。
注意:冒8号后一定要有一个空格。
基于分隔符取子串
${var#*word}:
word:指定的分隔符。
功能:自左而右,查找var变量中所存储的字符串中,第一次出现的word分隔符,删除字符串开头至此分隔符之间的所有字符。
${var##*word}:
word:指定的分隔符。
功能:自左而右,查找var变量中所存储的字符串中,最后一次出现的word分隔符,删除字符串开头至此分隔符之间的所有字符。
${var%word*}:
word:指定的分隔符。
功能:自右而左,查找var变量中所存储的字符串中,第一次出现的word分隔符,删除字符串尾部至此分隔符之间的所有字符。
${var%%word*}:
word:指定的分隔符。
功能:自右而左,查找var变量中所存储的字符串中,最后一次出现的word分隔符,删除字符串尾部至此分隔符之间的所有字符。
查找替换:
${var/PATTERN/SUBSTITUTE}:查找var所表示的字符串中,将第一次被PATTERN所匹配的字符串,替换为SUBSTITUTE所表示的字符串。
${var//PATTERN/SUBSTITUTE}:查找var所表示的字符串中,将所有被PATTERN所匹配的字符串,替换为SUBSTITUTE所表示的字符串。
${var/#PATTERN/SUBSTITUTE}:查找var所表示的字符串中,行首被PATTERN所匹配的字符串,将其替换为SUBSTITUTE所表示的字符串。
${var/%PATTERN/SUBSTITUTE}:查找var所表示的字符串中,行尾被PATTERN所匹配的字符串,将其替换为SUBSTITUTE所表示的字符串。
查找删除:
${var/PATTER}:将var中第一次被PATTERN匹配的字符串删除。
${var//PATTER}:将var中所有被PATTERN匹配的字符串删除。
${var/#PATTER}:将var中行首被PATTERN匹配的字符串删除。
${var/%PATTER}:将var中行尾被PATTERN匹配的字符串删除。
大小写转换:
${var^^}:把var中所有小写字符转换成大写。
${var,,}:把var中所有大写字符转换成小写。
变量赋值:
${var:-VALUE}:如果var变量为空或未设置,那么返回value;否则返回var变量的值
${var:=value}:如果var变量为空或未设置,那么返回value,并将VALUE赋值给变量var;否则返回var变量的值
${var:?ERROR_INFO}:如果var变量为空或未设置,那么返回ERROR_INFO;否则返回var变量的值
${var:+VALUE}:如果var变量不为空,那么返回value;
以上是关于linux—shell编程之数组和字符串处理工具的主要内容,如果未能解决你的问题,请参考以下文章