Chinaunix首页 | 论坛 | 博客
  • 博客访问: 178087
  • 博文数量: 66
  • 博客积分: 1736
  • 博客等级: 上尉
  • 技术积分: 830
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-05 15:40
文章分类

全部博文(66)

文章存档

2014年(17)

2013年(2)

2012年(47)

我的朋友

分类: LINUX

2012-12-26 10:33:05

  高级变量

  基本形式

  [1].变量扩展 格式 ${变量名称}

  [2].命令扩展 格式 $(命令)

  [3].算术扩展 格式 $((算术式))

  1.变量扩展

  基本形式:${变量名称}

  变量扩展含义:一种简易的条件判断,对不同的条件赋予变量不同的值替换.它和变量存在与否的关系很大.

  1.1 测试变量是否存在的基本用法

  语法: ${待测变量-默认值}

  说明:若待测变量不存在则符合判断条件,以传回默认值作为处置.

  解析:若待测变量不存在则返回默认值,否则返回变量的值

  实例:

  unset a

  echo ${a-'默认'} #输出为'默认'

  1.2 测试变量不存在或其值为空时传回一个默认值

  语法:${待测变量:-默认值}

  实例:

  a=

  echo ${a:-'默认'} #输出为'默认'

  1.3 测试变量不存在或其值为空给变量赋予一个默认值

  语法:${待测变量:=默认值}

  实例:

  a=

  echo ${a:='默认'}

  echo $a #输出为2行'默认'

  1.4 测试变量不存在或其值为空,输出一个提示信息

  语法:${待测变量:?提示信息}

  实例:

  a=

  echo r={a:?提示信息} #输出"提示信息"

  1.5 测试变量存在且为非空则返回真值

  语法:${待测变量:+真值}

  实例:

  a=hello

  echo ${a:+world} #输出为"world"

  总结:

  符号 作用

  : 判断变量是否为空,若为空则为真

  + 正向,判断变量是否存在且不为空,若存在且不为空则为真

  - 反向,判断变量是否不存在,若不存在则为空

  = 赋值,

  ? 提示信息

  2.取字符串切片,获得字符串长度

  2.1 取字符串切片

  语法:

  [1].${变量:开始的位置索引}

  作用:截取从指定的位置开始到字符串结束的所有字符,开始字符的索引为0

  实例:

  str="hello world"

  echo ${str:6} #输出结果为"world"

  [2].${变量:起始位置:长度}

  作用:截取从指定的起始位置开始的指定长度的字符串。

  实例:

  str="hello world"

  echo ${str:6:2} #输出为"wo"

  2.2 计算字符串长度

  语法:${#变量名称}

  实例:

  str="hello world"

  echo ${#str} #输出结果为11

  3.对比样式

  目的:截取变量值(字符串)的某一个部分

  做法:将符合样式的部分字符串删除或替换

  3.1 由字符串前面开始对比删除最短的相符者

  语法:${待测变量#样式}

  说明:从待测变量的值的左边开始对比,删除最短符合样式的字符串

  实例:

  filename="/usr/sbin/ntpdate"

  echo ${filename#/*/} #显示结果sbin/ntpdate

  3.2 由字符串前面开始对比删除最长的相符者

  语法:${待测变量##样式}

  实例:

  filename="/usr/sbin/ntpdate"

  echo ${filename##/*/} #显示结果ntpdate

  3.3 由字符串后面开始对比删除最短的相符者

  语法:${待测变量%样式}

  实例:

  filename="/usr/sbin/ntpdate"

  echo ${filename%/*} #输出结果/usr/sbin

  3.4 由字符串后面开始对比删除最长的相符者

  语法:${待测变量%%样式}

  实例:

  filename="hello/usr/sbin/ntpdate"

  echo ${filename%%/*} #输出结果hello

  4.替换或删除部分字符串

  4.1 只替换找到的第一个字符串

  语法:${待测变量/样式/替换}

  实例:

  str="hello hello"

  echo ${str/hello/world} #结果为world hello

  4.2 替换找到的所有样式字符串

  语法:${待测变量//样式/替换}

  实例:

  str="hello hello"

  echo ${str/hello/world} #结果为world world

  4.3 删除第一个指定的字符串

  语法:${待测变量/要删除的字符串/}

  实例:

  str="hello hello"

  echo ${str/hello/} #结果为hello

  4.4 删除所有指定的字符串

  语法:${待测变量//要删除的变量/}

  实例:

  str="hello world hello"

  echo ${str//hello/} #输出结果为world

  5.命令扩展

  语法:$(命令)

  实例: time=$(date) 等价 time=`date`

  6.算术扩展

  语法:$((算术))

  实例:

  echo "a=$((5*5))" #结果为a=25

 
 

更多精彩的文章尽在:

 

 

 
文章资料由新居网法式家具    栏目整理推荐。
 
阅读(819) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~