快速业务通道

Linux shell编程(二)高级变量

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-04

高级变量,有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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号