Shell入门(三)之字符串

一、单引号

字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。

单引号不存在转义字符,如:\a,\n,$abc

#!/bin/bash
a='abc'
b='${a}bc';
echo $b;       #结果为:${a}bc

单引号字符串的限制:

(1)单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;

(2)单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

 

二、双引号

双引号的优点:

(1)双引号里可以有变量

(2)双引号里可以出现转义字符

#!/bin/bash
a="abc"
b="${a}bc";
echo $b;       #结果为:$abcbc

 

三、字符串连接

#!/bin/bash
a="abc"
b=$a"d"
c=$b'e'
echo $a $b $c

 

四、字符串长度

${#string}获取长度

`expr length 字符串`   字符串可以加'或" ,其中"适用于所有字符,包括转义字符,变量

 注意使用的是反引号 ` 而不是单引号 '

#!/bin/bash
a='abc'
echo ${#a}     #3
echo `expr length "字符串"`  #9  中文占3个字节

 

五、提取子字符串

${string:start}     从字符串第 start 个字符开始截取到字符串末尾,下标从0开始

${string:start:length}  从字符串第 start 个字符开始截取 length个字符,下标从0开始

${string:0-start}     从字符串倒数第 start 个字符开始截取到字符串末尾

${string:0-start:length}  从字符串倒数第 start 个字符向右开始截取 length个字符

 

`expr substr 字符串 start  length`  下标从1开始,字符串可以加'或" ,其中"适用于所有字符,包括转义字符,变量

#!/bin/bash
a='abcdefg'
echo ${a:2}      #cdefg
echo ${a:2:2}    #cd
echo ${a:0-1}    #g
echo ${a:0-5:4}  #cdef
echo `expr substr "$a" 1  2`    #ab

 

六、在字符串查找字符

下标从1开始,查找不到返回0

`expr index 字符串 匹配字符`

 

字符串与匹配字符都可以加'或" ,其中"适用于所有字符,包括转义字符,变量

#!/bin/bash
a='welcome to learn shell'
echo `expr index "$a" co`                              #4
b='b'
echo `expr index b字符串 匹配字符`                      #2
echo `expr index "b字符串" '匹配字符'`           #2
echo `expr index "b字符串" "${b}匹配字符"`         #1

 

七、正则匹配

`expr match 字符串 匹配字符串`     匹配字符串开头的子串,返回匹配到的子串的长度,若找不到则返回0

字符串与匹配字符串都可以加'或" ,其中"适用于所有字符,包括转义字符,变量

#!/bin/bash
a='welcome to learn shell'
echo `expr match "$a" w.*a`     #14
echo `expr match "$a" e.*a`     #0  尽管字符串包含e.*a,但不以w开头    

 

八、删除  支持通配符*与?、+等

${string#删除子串}     删除左边最小的匹配string开头的子串

${string##删除子串}   删除左边最大的匹配string开头的子串

${string%删除子串}     删除右边最小的匹配string末尾的子串

${string%%删除子串}   删除右边最大的匹配string末尾的子串

#!/bin/bash
a='welcome to learn shell'
echo  ${a#e*e}      #welcome to learn shell   没有匹配$a的开头
echo  ${a#w*e}      #lcome to learn shell
echo  ${a##w*e}     #ll                   
echo  ${a%e*l}      #welcome to learn sh
echo  ${a%%e*l}     #w

 

九、替换  支持通配符*与?、+等

${string/被替换串/替换串}

${string//被替换串/替换串}

#!/bin/bash
a='welcome on welcome'
echo  ${a/e*c/x}       #wxome
echo  ${a/e*c/x}       #wxome
echo  ${a//el/a}       #wacome on wacome

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tms tck_在雅加达EE TCK中使用Arquillian的可能方法

tms tck最近,我们讨论了如何创建独立的Jakarta Batch测试套件(TCK)。 对于大多数提交者而言,使用Arquillian将测试从实现中如何执行抽象化是很自然的。 但是Romain提出了一个有趣的想法,即使用纯JUnit5引起了我的思考。…

本地方法(JNI)——使用调用API

【0】README 1) 本文文字描述source code 均转自 core java volume 2 , 旨在理解 本地方法(JNI)——使用调用API 的基础知识 ; 2) for source code, please visit : https://github.com/pacosonTang/cor…

Shell入门(四)之数组

一、一维数组 bash支持一维数组(不支持多维数组),并且没有限定数组的大小。 类似与C语言,数组元素的下标由0开始编号。 二、定义数组 在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。…

aws cloud map_销毁AWS资源:Cloud-Nuke还是AWS-Nuke?

aws cloud map因此,您在开发帐户上工作,并且Terraform陷入了一个循环,难道不让您轻易销毁剩余资源吗? 进入nuke CLI的世界! 在撰写本文时,我使用的是v0.1.16版本 用Go语言编写的《 Gruntwork》不会破坏掉…

mysql error 1045 的解决方法

【0】README 1)以下是 解决方法的steps: step1)点击 skip 和 cancel 退出 mysql 配置 step2) 重启mysql server config wizard, 然后 remove instance step3) 随后卸载mysql(通过360或 …

Shell入门(五)之参数

一、Shell 传递参数 在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,0为执行文件名,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推 比如&…

openj9下载_Quarkus on OpenJ9 JVM和资源消耗

openj9下载除了本机模式,Quarkus在JVM模式下也能很好地运行,这有其自身的优势。 您可以使用替代的JVM,例如OpenJ9,它可以更好地消耗资源。 在下面的视频中,我将展示交换JVM有多么容易。 在视频中,我在最新…

Shell入门(六)之算术运算

一、数学运算 (1)原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。 (2)expr 是一款表达式计算工具,使用它能完成表达式的求值操作。 ex…

java数据库编程——执行SQL 语句

【0】README 1) 本文文字描述source code 均转自 core java volume 2 , 旨在理解 java数据库编程——执行SQL 语句 的基础知识 ; 2)for source code, please visit : https://github.com/pacosonTang/core-java-vol…

php cdi_Quarkus的其他(非标准)CDI功能

php cdiQuarkus支持CDI(上下文和依赖注入)2.0,但并非全部,仅支持最常见的功能。 但是,Quarkus确实包含一些非标准功能,这些功能对于开发人员非常方便,我想在下面的视频中进行展示。 不管您是否…

Shell入门(七)之关系运算

一、关系运算 shell关系运算符只支持数字,不支持字符串,除非字符串的值是数字。 a10 b20 运算符说明举例-eq检测两个数是否相等,相等返回 true。[ $a -eq $b ] 返回 false。-ne检测两个数是否相等,不相等返回 true。[ $a -ne $…

java数据库编程——Insert and Retrieve Images from MySql Table Using Java

【0】README0.1)本文翻译自 http://harmeetsingh13.blogspot.jp/2013/03/insert-and-retrieve-images-from-mysql.html【1】正文如下:段1)演示 从数据库表中插入和查询出图片。大多数情况下,图片数据都存储在数据库外部的一些文件…

Shell入门(八)之布尔运算

一、常规的布尔运算 常规的布尔运算符有:!、&&、|| 使用语法 ! exp exp && exp exp || exp [[ n op m && a op b]] ... exp为[ n op m ]或test n op m或true或false 二、条件测试的布尔运算 条件测试的布尔运算有:!、…

java switch语句_Java 14:查看更新的switch语句

java switch语句于2020年3月发布的JDK 14带有switch语句的更新版本。 这是JDK 12和JDK 13中的预览功能。 要了解差异,让我们看一个简单的示例。 假设我们要基于DayOfWeek枚举来计算每日工作时间。 使用旧的使用switch语句的方法,我们的解决方案可能如下…

java数据库编程——执行查询操作(一)

【0】README 1) 本文部分文字描述和source code 均转自 core java volume 2 , 旨在理解 java数据库编程——执行查询操作 的基础知识 ; 2) 本文和 java数据库编程——执行查询操作(二) 是姊妹篇&#xff…

Shell入门(九)之字符串比较

一、字符串比较 字符串比较符:、!、-z、-n、str 实际上,shell不区分数值与字符串类型,数值也可以使用上面比较。 a"mk" b"maokun" 运算符说明举例检测两个字符串是否相等,相等返回 true。[ $a $b ] 返回…

java中将毫秒转换成时间_在Java中将时间单位转换为持续时间

java中将毫秒转换成时间java.util.concurrent.TimeUnit以给定的粒度单位表示Java中的持续时间,并提供跨单位转换的实用方法。 java.util.concurrent.TimeUnit最早是在Java早期(1.5)引入的,但自那时以来已经扩展了好几次。 在此博客…

java数据库编程——执行查询操作(二)

【0】README 1) 本文部分文字描述和source code 均转自 core java volume 2 , 旨在理解 java数据库编程——执行查询操作(二) 的基础知识 ; 2) 本文和 java数据库编程——执行查询操作(一&…

Shell入门(十)之echo

一、echo参数 echo [参数选项] 字符串 参数选项 -e 解析字符串中的转义字符,如\n -E 这是默认设置,不解析转义字符 -n 不输出换行,可以使用echo -e 字符串"\c" 代替 #!/bin/bash a"abc\n" echo $a echo -e…

vaadin_Vaadin提示:延迟加载和商品标识

vaadin延迟加载 在Vaadin中使用网格,树或任何其他多值组件时,您通常希望显示数据库表中的数据,并且通常数据库中有多行。 在这种情况下,加载数千甚至数百万条记录是没有意义的,这将是一个巨大的性能问题。 对于此用例&…