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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步