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

 

Linux高级变量的更多相关文章

  1. Linux Shell 高级变量及字符串

    高级变量包含三个部分1.变量扩展2.命令替换3.算术扩展在Bash Shell中,$算符会触发到上述三种扩展,基本形式如下:    基本型             扩展种类            例子 ...

  2. Linux shell 变量 数学 运算

    Abstract : 1)  Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 ...

  3. linux高级编程基础系列:线程间通信

    linux高级编程基础系列:线程间通信 转载:原文地址http://blog.163.com/jimking_2010/blog/static/1716015352013102510748824/ 线 ...

  4. Linux高级知识

    Linux高级知识 十一.LAMP架构 1.LAMP架构介绍.MySQL.MariaDB介绍.MySQL安装 2.MariaDB和Apache安装 3.安装PHP5和PHP7 4.Apache和PHP ...

  5. Linux高级命令进阶(week1_day2)

    Linux高级命令进阶(week1_day2)--技术流ken   输出重定向   场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候 ...

  6. Linux 环境变量 设置 etc profile

    一.Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1.永久的:需要修改配置文件,变量永久生效. 2.临时的:使用export命令声明即可,变量在关闭shell时失效. 二. ...

  7. linux 环境变量设置及查看

    1. 显示环境变量HOME $ echo $HOME /home/redbooks 2. 设置一个新的环境变量hello $ export HELLO="Hello!" $ ech ...

  8. 三种配置linux环境变量的方法(以java为例)

    1.先确认是否为openjdk:参考 2. 修改/etc/profile文件  如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性 ...

  9. Linux环境变量的修改(永久,暂时)以及修改ls显示的时间格式

    本文转自:http://blog.sina.com.cn/s/blog_8e21864f01014u9h.html Linux修改环境变量,很简单但很重要 一.Linux的变量种类 按变量的生存周期来 ...

随机推荐

  1. Java数组(初学者必看)

    数组无论在哪种编程语言中都算是最重要的数据结构之一,同时不同语言的实现及处理也不尽相同.但凡写过一些程序的人都知道数组的价值及理解数组的重要性,与链表一道,数组成为了基本的数据结构.尽管Java提供了 ...

  2. Java知多少(19)访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: 1 public class className { 2 // body of class 3 } 4 pr ...

  3. leetcode98 Validate Binary Search Tree

    题目: Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is define ...

  4. iOS 工程中文件变成红色是什么情况

    iOS 工程中文件变成红色是原有的文件路径改变了,系统找不到了.

  5. configs for postgresql restart and postgresql reload

    -- configs requiring postgresql restart select name, setting, context from pg_settings where context ...

  6. jsp eclipse 创建jsp项目

    选择File菜单 File->new->Other... 选择Dynamic Web Project项目->Next 写入项目->Finish 在WebContent鼠标右键- ...

  7. myeclipse项目里有红色感叹号

    myeclipse项目里有红色感叹号 这种情况是因为 .classpath 文件里面配置引用了某个jar,但是实际上你的 lib 里面并没有这个jar 所以才会有红色的提示. 不用拿.classpat ...

  8. JSon_零基础_006_将JSon格式的字符串转换为Java对象

    需求: 将JSon格式的字符串转换为Java对象. 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, 通过get(key ...

  9. JAVA通过poi对Excel数据在(jsp+ssh)环境下导入导出

    POI的下载与安装  请到网站http://www.apache.org/dyn/closer.cgi/poi/右击超链接2.5.1.zip下载压缩包poi-bin-2.5.1-final-20040 ...

  10. 夺命雷公狗TP下关联查询

    记录下我们常用的关联查询: public function add4(){ $id=$_GET['id']; $this->list = M("student")->t ...