http://blog.chinaunix.net/uid-27040051-id-3450991.html  

  高级变量

  基本形式

  [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

 

最新文章

  1. Android Weekly Notes Issue #224
  2. QQ浏览器安卓5.8版本的Uint8Array API有bug
  3. ganglia安装简记
  4. 手工加载DLL
  5. 配置fabric-crashlytics教程
  6. Sql Server 简单查询 异步服务器更新语句
  7. 软件工程(GZSD2015)学生博客列表
  8. 使用EndNote在Word中插入参考文献的格式设置
  9. FFT总结
  10. Java使用BufferedImage修改图片内容
  11. for break
  12. javascript innerHTML、outerHTML、innerText、outerText的区别(转)
  13. 在web.xml中设置全局编码
  14. js时间戳如何转时间
  15. maven工程的多环境配置方案(profile)
  16. 快速SQL调优/优化(SQL TUNING)——1分钟搞定超慢SQL
  17. python sublime run快捷键设置
  18. windows服务安装记录
  19. 线段树基本操作(Segment Tree)
  20. MongoDB - Cursors

热门文章

  1. PostgreSQL/bin
  2. JavaBean 动作元素事例
  3. [原创]java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用
  4. javascript DOM对象
  5. java.注释类型
  6. 【linux】暂时解决sis m672(神舟F4000 D9) linux驱动 宽屏分辨率的问题?
  7. 七、Java基础---------JDK安装与配置
  8. co css规范
  9. PHP人民币金额数字转中文大写的函数
  10. Spring 复习笔记01