声明:$ 后面跟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. SpringMvc CharacterEncodingFilter 解析 encoding 参数并初始化参数

    SpringMvc CharacterEncodingFilter 解析 encoding 参数并初始化参数:

  2. 多条件搜索优化sql

    SELECT ctm.* FROM crawltaskmanage ctm,urlmanage um WHERE (ctm.status='0' AND um.`urlId`=ctm.`urlId`) ...

  3. Html ul、dl、ol 标签

    Html ul.dl.ol 标签 <html> <body> <!-- ul 标签指定字符断点,左边带一个“·”点--> <ul> <!-- li ...

  4. Windows下应用级别的IIS负载均衡方案 Application Request Route

    转载于:https://blog.csdn.net/2000killer/article/details/51228625 序言 随着公司业务的发展,后台业务就变的越来越多,然而服务器的故障又像月经一 ...

  5. C#使用NPOI导出Excel

    当记录数超出65536时,有两种方式处理: 一是调用WriteToDownLoad65536方法建立多个Excel. 二是调用WriteToDownLoad方法在同一个Excel中建多个Sheet. ...

  6. Codeforces 528E Triangles 3000 - 计算几何

    题目传送门 传送点I 传送点II 传送点III 题目大意 给定$n$的平面上的直线,保证没有三条直线共点,两条直线平行.问随机选出3条直线交成的三角形面积的期望. 显然$S=\frac{1}{2}ah ...

  7. 新建Maven项目建成后本应该有的src/main/java和src/test/java目录并没有出现:

    转自:http://www.cnblogs.com/dong-dong-dong/p/9565466.html 新建Maven项目建成后本应该有的src/main/java和src/test/java ...

  8. Bootstrap3基础 thumbnail 圆角类型的div块

      内容 参数   OS   Windows 10 x64   browser   Firefox 65.0.2   framework     Bootstrap 3.3.7   editor    ...

  9. idea基于hibernate生成的Entitle对象,会忽略外键属性

    需要自己手动添加 如 private String cgcode; @Basic @Column(name = "cgcode") public String getCgcode( ...

  10. 《Visual C# 从入门到精通》第二章方法和作用域——读书笔记

    第2章 方法和作用域 2.1创建方法 方法是一个基本的,强大的编程机制.可视为函数或者子程序相似的东西. 方法名是个有意义的标识符. 方法主体包含方法被调用时实际执行的语句. 声明一个方法的实例如下: ...