字符串的长度( $var中字符的个数)。对任意数组 array, ${#array} 返回数组中第一个元素的长度。数组
如下状况例外:
${#*} 和 ${#@} 返回位置参数的个数。
任意数组array, ${#array[*]} 和${#array[@]}返回数组中元素的个数。bash
2. ${var%Pattern}, ${var%%Pattern}
${var%Pattern} 删除$var 后缀部分匹配到的最短长度的 $Pattern 。
${var%%Pattern} 删除$var 后缀部分匹配到的最长长度的 $Pattern .字符串
#!/bin/bash
stringZ=abcABC123ABCabc
pattern=*C
pattern1=*b
echo "${stringZ#$pattern}" #123ABCabc
echo ${stringZ##$pattern} #abc
echo "${stringZ#$pattern1}" #bcABC123ABCabc
echo ${stringZ##$pattern1} #cstring
3. ${var%Pattern}, ${var%%Pattern}
${var%Pattern}删除$var后缀部分匹配到的最短长度的$Pattern。
${var%%Pattern}删除$var后缀部分匹配到的最长长度的$Pattern。it
#!/bin/bash
stringZ=abcABC123ABCabc
pattern=C*
pattern1=b*
echo "${stringZ%$pattern}" #abcABC123AB
echo ${stringZ%%$pattern} #abcAB
echo "${stringZ%$pattern1}" #abcABC123ABCa
echo ${stringZ%%$pattern1} #a
要求是pattern,也就是RE,必须指定一个从左到右,或从右到左的删除规则,最好不要是字符串。如果只删除一个字符,也可使用一个字符的规则。字符
4. ${var/Pattern/Replacement}替换var中第一个匹配到的Pattern为Replacement.参数
${var//Pattern/Replacement}全局替换.替换var 中全部匹配到的Pattern为Replacement.printf
在Replacement为空时,表示删除。ab
5. set ,能够强制解析参数组。
#!/bin/bash -efor planet in "Mercury 36" "Venus 67" "Earth 93" "Mars 142" "Jupiter 483"do set -- $planet printf "$1 $2\n"doneexit 0