shell 字符串操作

示例:var=http://www.ssjt.com/shy.htm

${#var}:得到var的长度
${var#*//}:从左边开始删除第一个 // 号及左边的所有字符,即删除 http://
${var##*/}:从左边开始删除最后一个 / 号及左边的所有字符,即删除 http://www.ssjt.com/
${var%/*}:从右边开始删除第一个 / 号及右边的字符, 即删除 /shy.htm
${var%%/*}:从右边开始删除最后一个 / 号及右边的字符, 即删除 /www.ssjt.com/shy.htm
助记:#位于$左边,%位于$右边。一个表示第一个,两个表示最后一个
${var/a/b}把var中的第一个a替换成b
${var//a/b}把var中的所有a替换成b
${var/#a/b}如果var的前缀是a,把这个前缀的a替换成b
${var/%a/b}如果var的后缀是a,把这个后缀的a替换成b
提示:a,b可以是字符串
${var##/*}不起作用,从哪边开始,*就放在匹配字符的哪边表示删除哪边。

${string#substring} 从变量$string的开头, 删除最短匹配$substring的子串

${string##substring} 从变量$string的开头, 删除最长匹配$substring的子串

${string%substring} 从变量$string的结尾, 删除最短匹配$substring的子串

${string%%substring} 从变量$string的结尾, 删除最长匹配$substring的子串

字符串切割:把所有切割符替换成空格,再使用(),例如将var用,切割,var_split=(${var//,/ }),就可以使用${array[@]}

有4种特殊的替换结构:${var:-string},${var:+string},${var:=string},${var:?string}

${var:-string}表示若变量var不为空,则等于var的值,否则等于string的值。

${var:=string}的替换规则与${var:-string}相同,不过多了一步操作:若var为空时,还会把string的值赋给var。

${var:+string}的替换规则和上面的相反,表示若变量var不为空,则等于string的值,否则等于var的值(即空值)。

${var:?string}表示若变量var不为空,则等于var的值,否则把string输出到标准错误中,并从脚本中退出。

本文作者:xzh-personal-issue

本文链接:https://www.cnblogs.com/xzh-personal-issue/p/17049519.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   心比天高xzh  阅读(47)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起