天天看点

shell“内置字符串处理”

结了shell中内置的字符串处理功能,包括> ${} # % :- :+ ? 等的使用
使用内置操作符处理字符串时,性能较好
           

赋值处理

string−word:如果string没设定,则使用word作为返回值(空值和非空值不做处理) s t r i n g − w o r d : 如 果 s t r i n g 没 设 定 , 则 使 用 w o r d 作 为 返 回 值 ( 空 值 和 非 空 值 不 做 处 理 ) {string:-word}: 如果string没设定或为空值,则使用word作为返回值(非空值时不做处理) 经常使用

string+word:如果string设定了(空值或非空值),则使用word作为返回值(没有设定不做处理) s t r i n g + w o r d : 如 果 s t r i n g 设 定 了 ( 空 值 或 非 空 值 ) , 则 使 用 w o r d 作 为 返 回 值 ( 没 有 设 定 不 做 处 理 ) {string:+word}: 如果string为非空值,则使用word作为返回值(没设定或空值时不做处理)

string=word:如果string没设定,则使用word作为返回值,同时将word值赋值给string s t r i n g = w o r d : 如 果 s t r i n g 没 设 定 , 则 使 用 w o r d 作 为 返 回 值 , 同 时 将 w o r d 值 赋 值 给 s t r i n g {string:=word}: 如果string没设定或为空值,则使用word作为返回值,同时将word复制给string

string?word:如果string没有设定,则将word输出到STDERR(空值及非空值不做处理) s t r i n g ? w o r d : 如 果 s t r i n g 没 有 设 定 , 则 将 w o r d 输 出 到 S T D E R R ( 空 值 及 非 空 值 不 做 处 理 ) {string:?word}: 如果string没设定或为空值,则将word输出到STDERR(非空值不做处理)

获取字符串长度

${#string} (#号也称为为number sign )

字符串删除

设定string=’http://www.codeshold.me/2016/11/mac_skills.html’

  1. ${string#*/} : 删掉第一个/及其左边的字符串,返回:/www.codeshold.me/2016/11/mac_skills.html
  2. ${string##*/}: 删掉最后一个/及其左边的字符串, 返回mac_skills.html
  3. ${string%/*} : 删掉最后一个/及其右边的字符串,返回http://www.codeshold.me/2016/11
  4. ${string%%/*}: 删除第一个/及其右边的字符串,返回http:
  5. 类似的有{string#*.}删掉第一个.及其左边的字符串, {string#*.}删掉第一个.及其左边的字符串, {string%.*}删掉最后一个.及其右边的字符串
记忆方法:
# 表示从左往右匹配(键盘上 # 在 $ 的左边)
% 表示从右往左匹配(键盘上 % 在 $ 的右边)
单一符号是最小匹配(非贪婪);两个符号是最大匹配(贪婪匹配)
${变量名#substring正则表达式}从字符串开头开始配备substring,删除匹配上的表达式
${变量名%substring正则表达式}从字符串结尾开始配备substring,删除匹配上的表达式
           

字符串截取

设定string=abcdefg,字符串的下标从0开始

  1. ${string:2} : 返回string中从第3个到结束的所有字符,即cdefg
  2. ${string:0} : 返回string中从第1个到结束的所有字符,即abcdefg
  3. ${string:0:5} : 返回string中从第1个开始的5个字符,即abcde
  4. ${string:0-1} : 返回string中最后一个字符, 即g
  5. ${string:0-3} : 返回string中从倒数第3个字符到结束的所有字符, 即efg
  6. ${string:0-3:2}: 返回string中从倒数第3个字符开始的2个字符,即ef
记忆方法:
${string:开始:长度}
           

字符串替换

设定string=/dir1/dir2/dir3

  1. ${string/dir/swf} : 将第一个dir替换成swf,返回/swf1/dir2/dir3
  2. ${string//dir/swf} : 将全部的dir替换成swf,返回/swf1/swf2/swf3
记忆方法:
两个符号//表示贪婪匹配(全部替换)
${变量/查找/替换值}查找中出现了”/”要加转义符”\/”表示
           

转自:http://www.ituring.com.cn/article/273517