linux变量内容的删除与替代${}

bash对${}定义了不少用法。对变量的操作及判断是一个十分有用的工具,应好好学习一下,以下是说明的表列

变量的删除

${parameter#word}

${parameter##word}

${parameter%word}

${parameter%%word}

变量的提取

${parameter:offset}

${parameter:offset:length}

变量的替换

${parameter/pattern/string}

${parameter//pattern/string}

变量的删除、提取、替换

[root@awake~]#file=/dir1/dir2/dir3/my.file.txt//定义一个变量

[root@awake~]#echo$file//显示定义的变量

/dir1/dir2/dir3/my.file.txt

[root@awake~]#echo${file#*/}//删除/和/左边的字符串,最短匹配的

dir1/dir2/dir3/my.file.txt

[root@awake~]#echo${file##*/}//删除/和/左边的字符串,最长匹配的

my.file.txt

[root@awake~]#echo${file%/*}//删除/和右边的字符串,最短匹配

/dir1/dir2/dir3

[root@awake~]#echo${file%%/*}//删除/和右边的字符串,最长匹配,全部删除完了,因此为空置

[root@awake~]#echo${file:5}

/dir2/dir3/my.file.txt//提取这个不知如何解释,没查到

[root@awake~]#echo${file:0:5}//提取第5个字节左边的5个这个不知如何解释,没查到

/dir1

[root@awake~]#echo${file:5:6}//提取第5个字节的右边6个字节

/dir2/

[root@awake~]#echo${file/dir/path}//用path替换最左边的dir,其中/应该是参考符,如果没有/的变量内容应该如何替换?

/path1/dir2/dir3/my.file.txt

[root@awake~]#echo${file//dir/path}//用path替换全部的dir

/path1/path2/path3/my.file.txt

[root@awake~]#

利用${}还可针对不同的变数状态(没设定、空值、非空值)赋值:

${parameter-word}

${parameter:-word}

${parameter:=word}

${parameter:?word}当parameter指示的参数没有被设值的时候,将会通过标准错误的方式显示word中的语句。

${parameter:+word}

${!prefix*}

${#parameter}

${#var}可计算出变量值的长度:

${#file}可得到27,因为/dir1/dir2/dir3/my.file.txt是27个字节

如果old变量为未设定或叫不存在,那么将new=content

[root@awake~]#unsetnewold

[root@awake~]#echo${old-content}

content

[root@awake~]#new=${old-content}

[root@awake~]#echonew=$new,old=$old

new=content,old=

如果old变量为空字符串,那么将new=空

[root@awake~]#unsetoldnew

[root@awake~]#old=""

[root@awake~]#new=${old-content}

[root@awake~]#echonew=$new,old=$old

new=,old=

[root@awake~]#

如果old变量为非空字符串,那么new=$old

[root@awake~]#unsetoldnew

[root@awake~]#old=old

[root@awake~]#new=${old-content}

[root@awake~]#echonew=$new,old=$old

new=old,old=old

[root@awake~]#

总结及其他字符整理

变量设置方式old没有设置old为空字符串old已设置为非空字符串

new=${old-content}new=contentnew=new=$old

new=${old:-content}new=contentnew=contentnew=$old

new=${old+content}new=new=contentnew=content

new=${old:+content}new=new=new=content

new=${old=content}old=content

new=contentold不变

new=old不变

new=$old

new=${old:=}

old=content

new=content

old=content

new=content

old不变

new=$old

new=${old?content}

content输出至stderrnew=var=$str

new=${old:?content}

content输出至stderrcontent输出至stderrvar=$str

相关推荐