Linux shell编程(二)高级变量
高级变量,有3个主题: (1)变量扩展 ${变量名称} $(filename) (2)命令替换 ${命令} $(ls /) (3)算术扩展 $((算术式)) $((9 9)) 1. 测试变量“存在于否”的基本用法 语法:${待测变量-默认值} 用例: unset myname r=${myname-''basher''} echo $r 结果为:basher 2. 测试变量“不存在”或其值为空:“传回”一个默认值 语法:${待测变量:-默认值} 用例: myname= r=${myname:-''basher''} echo $r 结果为:basher 特殊运用法 [ -n ${DEBUG:-} ] && set -v [ ]是测试条件的语法,其中-n是用来测试后接的变量是否有值,若非空,则传回真值. ${DEBUG:-}就是-n要测试的对象.:-后面原本放置默认值的地方却没有任何东西,表示故意要让默认值为空. 3.测试变量“不存在”或其值为空:给变量设一个默认值 语法:${待测变量:=默认值} 用例: unset count r=${count:=100} echo $count 结果为:100 用例2: count=500 r=${count:=100} echo $r 结果为:500 目的:给变量设一个默认值 4.测试变量是否“不存在”或其值为空:提示错误信息 语法:${待测变量:?提示信息} 5.测试变量的“存在性” 语法:${待测变量: 真值} 用例: Iamhappy=''feel so good'' r=${Iamhappy: ''true''} echo $r 结果为:true 目的:用来测试某件事是真的. 6.变量的扩展:取字符串切片,字符串长度 (1)取字符串切片 语法一:${变量:位置起点} 用例: myname="sheller name" substr=${myname:4} 结果为:ler name 语法二:${变量:位置起点:长度} 用例: filename="/etc/apache2" dir1=${filename:1:3} echo $dir1 结果为etc 7.计算字符串长度 语法:${#变量名称} 用例: filename="/usr/sbin/ntpdate" echo ${#filename} 结果为:17 8.变量扩展:对比样式 由字符串前面对比,删除相符者 语法:${变量#样式} 用例1: filename="/usr/sbin/ntpdate" r=${filename#/*/} echo $r 结果为:sbin/ntpdate 用例2: filename="//usr/sbin/ntpdate" r=${filename#/*/} echo $r 结果为:usr/sbin/ntpdate 由前面对比,删最长的 语法:${变量##样式} 用例: filename="/usr/sbin/ntpdate" r=${filename##/*/} echo $r 结果为:ntpdate 由后面对比,删最短的 语法:${变量%样式} 用例: filename="/usr/sbin/ntpdate" r=${filename%/*} echo $r 结果为 /usr/sbin 由后面对比,删最长的 语法:${变量%%样式} 用例: fqdn="www.tnc.edu.cn" m=${fqdn%%.*} echo $m 结果为www 总结:#经常放在数字前面表示个数,就记住它是由前面对比.一个#删最短,两个#删最长. %经常放在数字后面代表百分比,看到它,就记着它是由后面对比.一个%删最短,两个%%删最长. 9. 只替换第一个对比符合的字符串 语法:${变量/样式/替换字符串} 用例:把:换成, act="mail:x:8:8:mail:/var/mail" r=${act/:/,} echo $r 结果为:mail,x:8:8:mail:/var/mail |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |