设为首页 收藏本站
查看: 543|回复: 0

Shell中的字符串操作

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-4-5 09:02:34 | 显示全部楼层 |阅读模式
最近总结了一下shell中关于字符串的一些操作,希望能帮助大家更好的了解shell。在shell中也可以通过awk、sed等外部命令来操作字符串,但是调用这些外部命令处理起来与shell内置操作符的性能相差非常大,所以建议大家尽量使用内置操作符和函数来完成对字符串的操作。废话不多说,下面就来看一下shell中内置的字符串操作符和函数吧。
1、判断读取shell变量的值
表达式含义实例
${var}变量var的值,同$varshl@ubuntu:~$ var="test"
shl@ubuntu:~$ echo ${var}
test
${var-default}如果var没有被声明, 那么就以default作为${var-default}的值 shl@ubuntu:~$ unset var
shl@ubuntu:~$ echo ${var-default}
default
shl@ubuntu:~$ echo $var

shl@ubuntu:~$ var=""
shl@ubuntu:~$ echo ${var-default}

shl@ubuntu:~$
${var:-default}如果var没有被声明, 或者其值为空, 那么就以default作为${var-default}的值 shl@ubuntu:~$ unset var
shl@ubuntu:~$ echo ${var:-default}
default
shl@ubuntu:~$ echo $var

shl@ubuntu:~$ var=""
shl@ubuntu:~$ echo ${var-default}
default
shl@ubuntu:~$
${var=default}如果var没有被声明, 那么就以default作为${var-default}的值,同时将var赋值为default shl@ubuntu:~$ unset var
shl@ubuntu:~$ echo ${var=default}
default
shl@ubuntu:~$ echo $var
default
shl@ubuntu:~$ var=""
shl@ubuntu:~$ echo ${var=default}

shl@ubuntu:~$
${var:=default}如果var没有被声明, 或者其值为空, 那么就以default作为${var-default}的值,同时将var赋值为default shl@ubuntu:~$ var=""
shl@ubuntu:~$ echo ${var:=default}
default
shl@ubuntu:~$ echo $var
default
shl@ubuntu:~$ var=""
shl@ubuntu:~$ echo ${var=default}
default
shl@ubuntu:~$
${var+default}如果var声明了, 那么其值就是default, 否则就为null字符串shl@ubuntu:~$ var=
shl@ubuntu:~$ echo ${var+default}
default
shl@ubuntu:~$ echo ${var:+default}

shl@ubuntu:~$ echo $var

shl@ubuntu:~$ var="test"
shl@ubuntu:~$ echo ${var+default}
default
shl@ubuntu:~$ echo ${var:+default}
default
shl@ubuntu:~$ echo $var
test

${var:+default}如果var被设置了, 那么其值就是default, 否则就为null字符串同上
${!test*}
${!test@}
匹配之前所有以test开头进行声明的变量shl@ubuntu:~$ test1=shl@ubuntu:~$ test2=
shl@ubuntu:~$ test3=
shl@ubuntu:~$ echo ${!test@}
test test1 test2 test3
shl@ubuntu:~$ echo ${!test*}
test test1 test2 test3
shl@ubuntu:~$
2、字符串操作


表达式定义实例
${#var}$var的长度shl@ubuntu:~$ var="hello"
shl@ubuntu:~$ echo ${#var}
5
shl@ubuntu:~$
${var:x}从位置 x 开始提取子串shl@ubuntu:~$ echo ${var:2}
llo
${var:x:y}从位置 x 开始提取长度为 y 的子串shl@ubuntu:~$ echo ${var:2:2}
ll
${var#*str}从变量$var的开头, 删除最匹配str的子串shl@ubuntu:~$ echo ${var#*l}
lo
${var##*str}从变量$var的开头, 删除最匹配str的子串shl@ubuntu:~$ echo ${var##*l}o
${var%str*}从变量$var的结尾, 删除最匹配str的子串shl@ubuntu:~$ echo ${var%l*}
hel
${var%%str*}从变量$var的结尾, 删除最匹配str的子串shl@ubuntu:~$ echo ${var%l*}
he
${var/src/dst}使用dst, 来代替第一个匹配的srcshl@ubuntu:~$ echo ${var/l/o}
heolo
${var//src/dst}使用dst, 来代替所有匹配的srcshl@ubuntu:~$ echo ${var//l/o}
heooo
${var/#src/dst}如果var的前缀匹配src, 那么就用dst来代替匹配到的srcshl@ubuntu:~$ echo ${var/#l/a}
hello
shl@ubuntu:~$ echo ${var/#h/a}
aell
${var/%src/dst}如果var的匹配src, 那么就用dst来代替匹配到的srcshl@ubuntu:~$ echo ${var/%o/a}
hella
PS:“str和src”可以是正则表达式


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-199794-1-1.html 上篇帖子: 使用Powershell创建新森林,添加第一台域控制器 下篇帖子: shell中连接符(并且、和、或者) 字符串
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表