码迷,mamicode.com
首页 > 系统相关 > 详细

Shell中的字符串操作

时间:2016-04-05 02:22:17      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:shell、string、linux

    最近总结了一下shell中关于字符串的一些操作,希望能帮助大家更好的了解shell。在shell中也可以通过awk、sed等外部命令来操作字符串,但是调用这些外部命令处理起来与shell内置操作符的性能相差非常大,所以建议大家尽量使用内置操作符和函数来完成对字符串的操作。废话不多说,下面就来看一下shell中内置的字符串操作符和函数吧。

1、判断读取shell变量的值  

表达式含义实例
${var}变量var的值,同$var

shl@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, 来代替第一个匹配的src

shl@ubuntu:~$ echo ${var/l/o}

heolo

${var//src/dst}使用dst, 来代替所有匹配的src

shl@ubuntu:~$ echo ${var//l/o}

heooo

${var/#src/dst}如果var的前缀匹配src, 那么就用dst来代替匹配到的src

shl@ubuntu:~$ echo ${var/#l/a}

hello

shl@ubuntu:~$ echo ${var/#h/a}

aell

${var/%src/dst}如果var的匹配src, 那么就用dst来代替匹配到的src

shl@ubuntu:~$ echo ${var/%o/a}

hella

PS:“str和src”可以是正则表达式


本文出自 “IT民工” 博客,请务必保留此出处http://sunhualong.blog.51cto.com/7175959/1760210

Shell中的字符串操作

标签:shell、string、linux

原文地址:http://sunhualong.blog.51cto.com/7175959/1760210

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!