字符串操作:
字符串切片:${var:offset:length}
a="world"
${a:2:2}的結果是:rl
取字符串的最后幾個字符:${var: -length}
注意:冒號之后有空格
基於模式取子串:
${var#*word}:其中word可以是指定的任意字符;自左而右,查找var變量所存儲字符中,第一次出現的word,刪除字符開頭直至第一次wrod出現處之間的所有字符;
# mypath='sysconfig/network-scripts/ifcfg-eth0'
# echo ${mypath#*/}
network-scripts/ifcfg-eth0
${var##*word}: 其中word可以是指定的任意字符;自左而右,查找var變量所存儲字符中,最后一次出現的word,刪除字符開頭直至最后一次wrod出現處之間的所有字符;
# mypath='/sysconfig/network-scripts/ifcfg-eth0'
# echo ${mypath##*/}
ifcfg-eth0
${var%word*}: 自右而左,刪除第一次word出現處的字符開始直到尾部的所有字符;
${var%%word*}:自右而左,刪除最后一次word出現處的字符開始直到尾部的所有字符;
例子:url=http://www.magedu.com:80
取端口:${url##*:}:刪除最后一個冒號之前的所有字符,即取最后一個冒號后邊的字符串
取協議:${url%%:*}:自右而左,刪除最后一個冒號之后的字符,即自右往左,取最后一個冒號前邊的字符串
查找並替換:
${var/pattern/substi}:查找var所表示的字串中,第一次被Pattern匹配到的字串,並以substi替換之;
${var//patten/substi}:查找var所表示的字串中,所有被Pattern匹配到的字串,並以substi替換之;
${var/#pattern/substi}:以行首錨定的方式將pattern匹配至var所表示的字串上,如果能匹配,則以substi替換之;
${var/%pattern/substi}:以行尾錨定的方式將pattern匹配至var所表示的字串上,如果能匹配,則以substi替換之;
可使用?, *元字符;
查找並刪除:
${var/pattern}:刪除pattern匹配到的第一次出現;
${var//pattern}: 刪除pattern匹配到的所有出現;
${var/#pattern}
${var/%pattern}
字符串大小寫轉換:
${var^^}:小寫-->大寫
${var,,}:大寫-->小寫
小寫轉大寫:echo "abc" | tr '[a-z]' '[A-Z]'
大寫轉小寫:echo "ABC" | tr '[A-Z]' '[a-z]'
可以參考:http://blog.csdn.net/linwhwylb/article/details/5904584
變量賦值:
${var:-word}: 如果var為空或未設置,那么返回word;否則,則返回var中的值;
${var:=word}:如果var為空或未設置,那么返回word,並且將word賦值給var;否則,返回var中的值;
${var:?err_info}:如果var為空或未設置,那么返回錯誤信息;否則,則返回var自身的值;
${var:+word}:如果var自身有正常數據,則返回word;
trap命令:
trap 'arg' SIGNAL
例如:trap 'echo "quit"; exit 1' SIGNAL #不會被腳本中的命令接收到,只會被腳本本身接收到
以上是自己總結的,也可以參考:
http://blog.csdn.net/horkychen/article/details/7676151
