声明:$ 后面跟linux可执行命令

一、变量替换

                  语法                      说明
${变量名#匹配规则} 从变量的开头进行规则匹配,将符合最短的数据删除
${变量名##匹配规则} 从变量的开头进行规则匹配,将符合最长的数据删除
${变量名%匹配规则} 从变量的尾部进行规则匹配,将符合最短的数据删除
${变量名%%匹配规则} 从变量的尾部进行规则匹配,将符合最长的数据删除
${变量名/旧字符串/新字符串} 变量内容包含旧字符串,则第一个旧字符串被新字符串取代
${变量名//旧字符串/新字符串} 变量内容包含旧字符串,则全部的旧字符串被新字符串取代

例1 :

定义变量:$ var_1="I love you, Do you love me"

输出变量:$ echo $var_1

打印结果:I love you, Do you love me

测试1:从头匹配最短删除

  $ var_11=${var_1#*ove}     // * 表示匹配任意字符

  $ echo $var_11

  打印结果:you, Do you love me    // 注意开头的空格被去掉了。

测试2: 从头匹配最长删除(贪婪模式)

  $ var_12=${var_1##*ove}     // * 表示匹配任意字符

  $ echo $var_12

  打印结果:me   // 注意开头的空格被去掉了。

测试3: 从后匹配最短删除

  $ var_13=${var_1%ov*} 

  $ echo $var_13

  打印结果:I love you, Do you l

测试4: 从后匹配最长删除(贪婪模式)

  $ var_14=${var_1%%ov*}

  $ echo $var_14

  打印结果:I l   // 大写的 i 和 小写的 L

测试5: 替换第一个旧字符串

  $ var_15=${var_1/love/LOVE}

  $ echo $var_15

  打印结果:I LOVE you, Do you love me

测试6: 替换全部的旧字符串

  $ var_16=${var_1//love/LOVE}

  $ echo $var_16

  打印结果:I LOVE you, Do you LOVE me

二、变量测试

变量测试不常用,实际编程中 if else 就可以取代变量测试。上面的 str没有配置 == str没有定义。expr是字符串,并不是变量。

举个例子

对于 var=${str-expr} :如果 str 没有配置,则 var=expr; 如果 str="",则 var=""; 如果 str 定义了且不为空,则 var=$str

  第一种情况:  

  第二种情况:

     

  第三种情况:

     

忽有所思:有疑惑的地方还是需要去测试、去验证,否则这个问题在心里永远是一个谜。

Shell 变量替换及测试的更多相关文章

  1. 【Shell脚本学习9】Shell替换:Shell变量替换,命令替换,转义字符

    如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: #!/bin/bash a=10 echo -e "Value ...

  2. Shell变量替换,命令替换,转义字符

    如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: #!/bin/bash a=10 echo -e "Value ...

  3. Shell替换:Shell变量替换,命令替换,转义字符

    如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: 复制纯文本复制 #!/bin/bash a=10 echo -e &quo ...

  4. [转]shell 变量替换

    转自:http://blog.csdn.net/xuhongning/article/details/6191515 1,参数替换: 不含有“:”的,只要定义了,就生效,不管是否为空 含有“:”的,即 ...

  5. shell变量替换扩展 变量测试

  6. shell变量替换 SHELL字符串处理技巧(${}、##、%%)

      在SHELL编程中,经常要处理一些字符串变量.比如,计算长度啊.截取子串啊.字符替换啊等等,常常要用到awk.expr.sed.tr等命令.下面给大家介绍个简单的字符串处理方法,用不着嵌套复杂的子 ...

  7. shell变量替换扩展 字符串计数截取

  8. Shell变量概述

    目录 1. Shell变量概述 1.定义变量,变量名=变量值.不能出现"-横杠"命令 2.引用变量,$变量名 3.查看变量,set显示所有变量,包括自定义变量和环境变量 4.取消变 ...

  9. shell脚本之文件测试表达式

    1.文件测试表达式的用法 我们在编程时处理一个对象时,需要对对象进行测试,只有符合要求的才采取操作处理:这样做的好处是避免程序出错以及无所畏的消耗系统资源,这个测试的对象可以是文件.字符串.数字等. ...

随机推荐

  1. [转载]要提高SQL查询效率where语句条件的先后次序应如何写

    出处:https://www.cnblogs.com/exe19/p/5786806.html 我们要做到不但会写SQL,还要做到写出性能优良的SQL语句. (1)选择最有效率的表名顺序(只在基于规则 ...

  2. 复习-css常用伪类别属性

    css常用伪类别属性 对<a>标签可制动态效果的css a:link:超链接的普通样式 a:visited:被点击过的超链接样式 a:hover:鼠标指针经过超链接上时的样式 a:acti ...

  3. 1、Storm集群安装

    1.下载 本次选择1.2.2版本进行安装 解压安装到/opt/app目录下 2.配置环境变量 export STORM_HOME=/opt/app/apache-storm-1.2.2 export ...

  4. Oracle 11gR2 用户重命名(rename user)

      Oracle 11.2.0.2里新增了一个新特性——用户重命名(Rename User),在这个版本之前要想重命名用户,需要按用户导出,再fromuser touser(imp)或remap_sc ...

  5. WIN10下,JAVA安装及环境变量配置(cmd可以运行java,却不能运行javac)

    1.安装JDK 选择安装目录 安装过程中会出现两次 安装提示 . 第一次是安装 jdk ,第二次是安装 jre .建议两个都安装在同一个java文件夹中的不同文件夹中.(不能都安装在java文件夹的根 ...

  6. 【Alpha】Scrum Meeting 4

    目录 前言 任务分配 燃尽图 会议照片 签入记录 困难 前言 第4次会议在4月8日由PM在教一317召开. 对项目完成情况进行了确认,分配下一阶段任务.时长60min. 任务分配 姓名 当前阶段任务 ...

  7. eclipse的springboot插件

    eclipse的springboot插件官网下载地址还喜欢捉迷藏,正确的下载路径修改方法: 点击zip,然后复制出官网路径如下 http://download.springsource.com/rel ...

  8. # NOI.AC省选赛 第五场T1 子集,与&最大值

    NOI.AC省选赛 第五场T1 A. Mas的童年 题目链接 http://noi.ac/problem/309 思路 0x00 \(n^2\)的暴力挺简单的. ans=max(ans,xor[j-1 ...

  9. (转载)Unity_3DText穿透场景物体解决

    在unity的3D物体下有一个3DText 物体.这个物体可以在空间坐标中显示文本文字. 如下图: 这个3D Text在场景中的显示会出现穿透3D物体的现象.如图:本来这个hello world 的文 ...

  10. 《温故而知新》JAVA基础八

    集合接口与泛型 定义: 集合接口会操作一系列相同属性数据的对象类型的数据结构,类似于数组,但是相对于数组来说更显得高端大气 集合的接口分为Collention和Map两大类,不直接操作,而是通过子类的 ...