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. 二叉树的先序、中序以及后序遍历(递归 && 非递归)

    树节点定义: class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } 递归建立二 ...

  2. Lintcode: Majority Number II

    Given an array of integers, the majority number is the number that occurs more than 1/3 of the size ...

  3. 搭建企业cacti服务器

    搭建企业cacti服务器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 今天搭建了cacti,为了方便监控我的交换机~因为查了很多zabbix的资料关于监控交换机的教程~我都屡屡失 ...

  4. zabbix监控windows主机网卡流量

    监控windows主机网卡流量 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.     欢迎加入:高级运维工程师之路 598432640 客户端配置:(172.30.1.120,wi ...

  5. codevs 1204 寻找子串位置

    http://codevs.cn/problem/1204/ 1204 寻找子串位置  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 青铜 Bronze 题解  查看运行结果 ...

  6. 弱类型变量原理探究(转载 http://www.csdn.net/article/2014-09-15/2821685-exploring-of-the-php)

    N首页> 云计算 [问底]王帅:深入PHP内核(一)——弱类型变量原理探究 发表于2014-09-19 09:00| 13055次阅读| 来源CSDN| 36 条评论| 作者王帅 问底PHP王帅 ...

  7. C# 把字符串类型日期转换为日期类型

    方法一:Convert.ToDateTime(string) string格式有要求,必须是yyyy-MM-dd hh:mm:ss ================================== ...

  8. 夺命雷公狗—angularjs—23—copy拷贝对象

    copy这在angularjs中是一个拷贝对象的方法: <!DOCTYPE html> <html lang="en" ng-app="myapp&qu ...

  9. 夺命雷公狗---DEDECMS----18dedecms之无可奈何标签-sql标签取出今天更新

    我们在一些开发时候遇到普通标签都解决不了的问题的时候可以尝试下我们dedecms自带的sql标签,几乎可以完成任何的查询需求 语法如下所示: 我们在这里将刚才首页今天更新那块给改写下,原先的是: {d ...

  10. ajax中网页传输(二)JSON——下拉列表显示练习

    以json返回数据类型显示“民族下拉列表” 第一:body页面显示部分 <title>JSON下拉显示Nation表中的数据</title> <script src=&q ...