shell学习总结之变量引用

运行结果:

bixiaopeng@bixiaopengtekiMacBook-Pro Shell备忘录$ bash Shell变量引用总结.sh
# -------------------------------------------------------
# =============  变量使用需知 ==========
# -------------------------------------------------------
# 1. 首个字符必须为字母(a-z,A-Z)
# 2. 中间不能有空格,可以使用下划线(_)
# 3. 不能使用标点符号
# 4. 不能使用bash里的关键字(可用help命令查看保留关键字)
# 5. 需要给变量赋值时,可以这么写:变量名=值
# 6. “=”是赋值符号。两边不能直接跟空格,否则shell将视为命令。
# 7. string是被赋予的变量值。若string中包含空格、制表符和换行符,则string必须用单双引号将其括起来。双引号了允许使用变量替换,单引号内不能。
# -------------------------------------------------------
# =============  常见变量引用 ==========
# -------------------------------------------------------
var=http://blog.csdn.net/wirelessqa

# ====== 引用格式: $var 返回变量值
echo $var # >- http://blog.csdn.net/wirelessqa

# ====== 引用格式: ${var} 返回变量值,推荐此写法,可使代码的可读性更好,避免歧义
echo ${var} # >- http://blog.csdn.net/wirelessqa

# ====== 引用格式: ${#var} 返回字符串的长度
echo ${#var} # >- 31

# ====== 引用格式: ${var:start_index} 返回从start_index一直到字符串末尾,start_index为0-x,返回倒数第x个字符到末尾
echo ${var:0} # >- http://blog.csdn.net/wirelessqa
echo ${var:10} # >- g.csdn.net/wirelessqa
echo ${var:0-10} # >- wirelessqa

# ====== 引用格式: ${var:start_index:length} 返回从start_index开始的length个字符,length为要截取的字符串长度
echo ${var:0:10} # >- http://blo

# ====== 引用格式: ${var#string} 返回从左边删除string前的字符串,包括string,它会匹配最近的那个字符
echo ${var#*/} # >- /blog.csdn.net/wirelessqa
echo ${var#*n} # >- .net/wirelessqa

# ====== 引用格式: ${var##string} 返回从左边删除string前的字符串,包括string,它会匹配最远的那个字符
echo ${var##*/ # >- wirelessqa
echo ${var##*n # >- et/wirelessqa

# ====== 引用格式: ${var%string} 返回从右边删除string后的字符串,包括string,它会匹配最近的那个字符
echo ${var%n*} # >- http://blog.csdn.
echo ${var%/*} # >- http://blog.csdn.net

# ====== 引用格式: ${var%%string} 返回从右边删除string后的字符串,包括string,它会匹配最远的那个字符
echo ${var%%n*} # >- http://blog.csd
echo ${var%%/*} # >- http:

# ====== 引用格式: ${var/substring/newstring}
echo ${var///bixiaopeng} # >- http:bixiaopeng/blog.csdn.net/wirelessqa

# ====== 引用格式: ${var//substring/newstring}
echo ${var////bixiaopeng} # >- http:bixiaopengbixiaopengblog.csdn.netbixiaopengwirelessqa

# ====== 引用格式: $(command) 返回command命令执行后的结果,相当于`command`
echo $(date) # >- 2014年
echo `(date)` # >- 2014年

# ====== 引用格式: $((算术表达式)) 返回算术运算的结果
echo $((2 + 3 * 5 / 5)) # >- 5

# -------------------------------------------------------
# =============  变量引用扩展 ==========
# -------------------------------------------------------
var="http://blog.csdn.net/wirelessqa"
var_empty=
var_empty2=
var_empty3=

# ====== 引用格式:1. ${var-DEFAULT}:如果var未被声明,则以default作为其值,同${var=DEFAULT}

##例1. var已被声明,以声明的值作为其值
${var-default} #<- http://blog.csdn.net/wirelessqa
${var=default} #<- http://blog.csdn.net/wirelessqa

##例2. var未被声明,以default为其值
${var_no-default} #<- default
${var_no=default} #<- default

# ====== 引用格式:2. ${var:-DEFAULT}:如果var未被声明或其值为空,则以DEFAULT作为其值,同${var:=DEFAULT}

##例1.var为空,以default为其值
${var_empty:-default} #<- default
${var_empty:=default} #<- default

##例2. var未被声明,以default为其值
${var_no:-default} #<- default
${var_no:=default} #<- default

##例3. var已被声明,以声明的值作为其值
${var:-default} #<- http://blog.csdn.net/wirelessqa
${var:=default} #<- http://blog.csdn.net/wirelessqa

# ====== 引用格式:3. ${var+OTHER}:如果var被声明了,那么其值就是OTHER,否则为空

##例1. var被声明,值为OTHER
${var+i am other} #<- i am other

##例2. var没有被声明,值为空
${var_nono+i am other} #<-

##例3. var为空,值也为OTHER
${var_empty2+i am other} #<- i am other

# ====== 引用格式:4. ${var:+OTHER}:如果var被声明了或其值不为空,那么其值就是OTHER,否则就为空

##例1. var被声明,值为OTHER
${var:+i am other} #<- i am other

##例2. var没有被声明,值为空
${var_nonono:+i am other} #<-

##例3. var为空,值为空
${var_empty3:+i am other} #<-

# ====== 引用格式:5. ${!varprefix*}:匹配之前所有以varprefix开头进行声明的变量

${!var*} #<- var var_empty var_empty2 var_empty3 var_no

# ====== 引用格式:6. ${!varprefix@}:匹配之前所有以varprefix开头进行声明的变量

${!var@} #<- var var_empty var_empty2 var_empty3 var_no

shell变量引用总结.sh

#! bin/bash
# -------------------------------------------------------------------------------
# 文件名:  shell变量引用总结.sh
# 版 本:   1.0
# 创建日期: 2014/02/15
# 描 述:   对shell变量的引用方式很多,用这些方式可以方便的获取shell变量的值,变量值的长度,变量的一个字串,变量被部分替换后的值等等
# 作 者:   毕小朋
# 邮 箱:   [email protected]
# 博 客:   http://blog.csdn.net/wirelessqa
# -------------------------------------------------------------------------------

function show_var_info()
{

cat <

微信公众帐号: wirelessqa

wirelessqa

关于作者:

作者: 毕小朋 | 老 毕 邮箱: [email protected]

微博: @WirelessQA 博客: http://blog.csdn.net/wirelessqa


你可能感兴趣的:(玩转,Linux)