Shell 变量替换及测试
声明:$ 后面跟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 变量替换及测试的更多相关文章
- 【Shell脚本学习9】Shell替换:Shell变量替换,命令替换,转义字符
如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: #!/bin/bash a=10 echo -e "Value ...
- Shell变量替换,命令替换,转义字符
如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: #!/bin/bash a=10 echo -e "Value ...
- Shell替换:Shell变量替换,命令替换,转义字符
如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: 复制纯文本复制 #!/bin/bash a=10 echo -e &quo ...
- [转]shell 变量替换
转自:http://blog.csdn.net/xuhongning/article/details/6191515 1,参数替换: 不含有“:”的,只要定义了,就生效,不管是否为空 含有“:”的,即 ...
- shell变量替换扩展 变量测试
- shell变量替换 SHELL字符串处理技巧(${}、##、%%)
在SHELL编程中,经常要处理一些字符串变量.比如,计算长度啊.截取子串啊.字符替换啊等等,常常要用到awk.expr.sed.tr等命令.下面给大家介绍个简单的字符串处理方法,用不着嵌套复杂的子 ...
- shell变量替换扩展 字符串计数截取
- Shell变量概述
目录 1. Shell变量概述 1.定义变量,变量名=变量值.不能出现"-横杠"命令 2.引用变量,$变量名 3.查看变量,set显示所有变量,包括自定义变量和环境变量 4.取消变 ...
- shell脚本之文件测试表达式
1.文件测试表达式的用法 我们在编程时处理一个对象时,需要对对象进行测试,只有符合要求的才采取操作处理:这样做的好处是避免程序出错以及无所畏的消耗系统资源,这个测试的对象可以是文件.字符串.数字等. ...
随机推荐
- Oracle经典书籍
Oracle实用教程 深入浅出Oracle
- [转载]SMTP的几个端口的比较
出处:https://blog.csdn.net/zhangyuan12805/article/details/78781330 1. SMTP Port 25: 25口是四个端口中最老的.这是在33 ...
- Python+OpenCV图像处理(十五)—— 圆检测
简介: 1.霍夫圆变换的基本原理和霍夫线变换原理类似,只是点对应的二维极径.极角空间被三维的圆心和半径空间取代.在标准霍夫圆变换中,原图像的边缘图像的任意点对应的经过这个点的所有可能圆在三维空间用圆心 ...
- 9个顶级开发IoT项目的开源物联网平台
https://blog.csdn.net/shnbiot/article/details/80432017 物联网(IoT)是帮助人工智能(AI)以更好的方式控制和理解事物的未来技术. 我们收集了一 ...
- laravel中empty(),is_null() 以及isEmpty()
PHP中 empty() empty() 函数用于检查一个变量是否为空. if(empty($result->order)){ //操作 } is_null() is_null() 函数用于检测 ...
- rabbitmq安装与高可用集群配置
rabbitmq版本:3.6.12 rabbitmq安装 1.安装openssl wget http://www.openssl.org/source/openssl-1.0.0a.tar.gz &a ...
- visual studio中csproj文件中的project guid改为小写
安装了vs2019之后,发现有的项目中引用的其他项目的源码,但是无法识别了. 最后发现是因为project guid是大写导致的. https://stackoverflow.com/question ...
- TensorFlow和Keras完成JAFFE人脸表情识别
cut_save_face.py #!/usr/bin/python # coding:utf8 import cv2 import os import numpy as np import csv ...
- _reincarnation
可以设定转生等级和转生需求.来奖励转生 `level`转生等级 `reqId` 转生需求 `rewId` 转生奖励 `gossipText` 菜单显示
- 前端UI框架选择区别对比推荐
UI选择务必慎重,货比三家. 弱水三千只取一瓢:弱水三千只取一瓢,源起佛经中的一则故事,警醒人们在一生中可能会遇到很多美好的东西,但只要用心好好把握住其中的一样就足够了 老牌构建于jQuery框架之上 ...