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

Shell参数展开

时间:2017-06-10 00:31:05      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:tab   pat   开头   parameter   nbsp   round   port   命令   替换   

参数展开(parameter expansion)是shell提供变量值在程序中使用的过程。

展开运算符 包括替换运算符和模式匹配运算符

 

替换运算符

运算符 替换说明 记忆
${varname:-word} 若varname存在且非null,则返回其值;否则返回word。 空则返回word
${varname:=word} 若varname存在且非null,则返回其值;否则,设置varname的值为word,并返回其值。改变变量的值。 空则返回word,并改变变量值
${varname:?message} 若varname存在且非null,则返回它的值;否则,显示varname: message,并退出当前的命令或脚本。省略message会出现默认信息parameter null or not set。 空则显示警告,并退出。
${varname:+word} 若varname存在且非null,则返回word;否则,返回null。 非空返回word,空则返回null。

 

 

 

 

 

 

示例:

$ echo ${varname}


$ echo ${varname:var1}


$ echo ${varname:-var1}
var1


$ echo ${varname:+var1}


$ echo ${varname:=var2}
var2


$ echo ${varname:+var1}
var1

$ echo ${varname}
var2

$ echo ${varname:?warning1}
var2

 

$ varname=

$ echo ${varname}

 

$ echo ${varname:+var5}


$ echo ${varname}


$ echo ${varname:?warning2}
-bash: varname: warning2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

模式匹配运算符

运算符  替换 记忆
${variable#pattern} 如果模式匹配于变量值的开头处,则删除匹配的最短部分,并返回剩下的部分。 删除开头最短(一个#)部分
${variable##pattern} 如果模式匹配于变量值的开关处,则删除匹配的最长部分,并返回剩下的部分。 删除开关最长(两个#)部分
${variable%pattern} 如果模式匹配于变量值的结尾处,则删除匹配的最短部分,并返回剩下部分。 删除结尾最短(一个%)部分
${variable%%pattern} 如果模式匹配于变量值的结尾处,则删除匹配的最长部分,并返回剩下部分。 删除结尾最长(两个%)部分

 

 

 

 

 

 

示例:

$ export myvar=/home/merlin/myfile.log.tail

$ echo ${myvar}
/home/merlin/myfile.log.tail

$ echo ${myvar#/*/}
merlin/myfile.log.tail

$ echo ${myvar##/*/}
myfile.log.tail

$ echo ${myvar%.*}
/home/merlin/myfile.log

$ echo ${myvar%%.*}
/home/merlin/myfile

Shell参数展开

标签:tab   pat   开头   parameter   nbsp   round   port   命令   替换   

原文地址:http://www.cnblogs.com/merlindu/p/6974162.html

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