字符串的長度( $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