一、单引号

字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟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

Shell入门(三)之字符串相关推荐

  1. 问题 1044: [编程入门]三个字符串的排序

    题目描述 输入三个字符串,按由小到大的顺序输出 输入 3行字符串 输出 按照从小到大输出成3行 样例输入 cde afg abc 样例输出 abc afg cde分析:可以使用java自带方法comp ...

  2. Shell脚本入门 03:字符串与数组

    文章目录 目的 字符串 获取字符串长度 拼接字符串 截取字符串 替换字符串 判断与默认值 内嵌文档与内嵌字符串 内嵌文档 Here Document 内嵌字符串 Here String 数组 数组定义 ...

  3. redis入门(三)

    文章目录 @[toc] redis入门(三) 目录 前言 事务 原理 Lua脚本 安装 脚本命令 EVAL EVALSHA lua和redis互操作 SCRIPT EXISTS SCRIPT FLUS ...

  4. linux常见命令以及shell入门编程(笔记总结记录)

    linux常见命令以及shell入门编程(笔记总结记录) 文章目录 linux常见命令以及shell入门编程(笔记总结记录) 一.linux常见命令 1.不常用 2.常用 3.数据查找处理相关 1.g ...

  5. linux shell脚本字符串连接符,学习Linux shell脚本中连接字符串的方法

    这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"= ...

  6. 【Python入门】Python字符串的45个方法详解

    Python中字符串对象提供了很多方法来操作字符串,功能相当丰富.必须进行全面的了解与学习,后面的代码处理才能更得心应手,编程水平走向新台阶的坚实基础.目前一共有45个方法,给大家分类整理,可以收藏查 ...

  7. Linux Shell高级技巧(三)

    十三.格式化输出指定用户的当前运行进程: 在这个例子中,我们通过脚本参数的形式,将用户列表传递给该脚本,脚本在读取参数后,以树的形式将用户列表中用户的所属进程打印出来.       /> cat ...

  8. ES6学习(三)—字符串的扩展

    ES6学习(三)-字符串的扩展 挑重点 文章只列举了一部分 完整版请看阮一峰ES6入门教程 点我查看阮一峰ES6入门教程 一.字符串的遍历接口 for-of- 遍历字符串和数组 不可以遍历对象,遍历对 ...

  9. shell入门学习笔记-12-命令详解: echo与printf

    系列目录与参考文献传送门: shell入门学习笔记-序章 命令详解 admindeMacBook-Pro:myshell admin$ type cd cd is a shell builtin ad ...

最新文章

  1. 保持图片和图片框一致的方法 收藏
  2. Spring4 SpringMVC Hibernate4 Freemaker 集成示例
  3. tesseract库
  4. 如何升级TrueNAS
  5. java 图片处理_java图片处理功能介绍
  6. cad插件_【CAD】源泉插件CAD插件强大到你无法想象,掌握此插件1/10功能你就是绘图大师...
  7. android播放器demo,Android 简单的本地音乐播放器Demo
  8. Vue复刻华为官网 (二)
  9. 营养与心理的眼睛保健方法
  10. 2013,爱上暗色调
  11. Knowledge based | 如何获取某类肿瘤中所有已被报道的相关突变基因?
  12. TCP/IP 主要报文头格式
  13. python爬取京东笔记本标题、品牌、价格、评论数
  14. 小技能:监控器查看视频录像回放
  15. 岂止于网络 xNet的应用交付逆袭之路
  16. Linux系统下,绑定USB串口设备号,解决上电USBID随机情况
  17. 《CISP》(十)软件安全开发
  18. 搜集日语资料的几种平台介绍
  19. android护眼提醒,安卓手机上怎么设置定时提醒休息的护眼提醒?
  20. mysql查询并更新_MySQL如何实现更新查询?

热门文章

  1. 上元节的灯会(亮)-dfs
  2. P4198 楼房重建 线段树 + 区间合并
  3. 【NOI2019】回家路线【无后效性dp状态设计】【斜率优化】
  4. P2852 [USACO06DEC]Milk Patterns G
  5. 201612-5 卡牌游戏
  6. 守列划分问题(圆排列+排列dp+结论)
  7. P2601 [ZJOI2009]对称的正方形(二维哈希)(二分)
  8. P5445-[APIO2019]路灯【set,树状数组套线段树】
  9. jzoj4279-[NOIP2015模拟10.29B组]树上路径【树形dp】
  10. jzoj3918-蛋糕【二分】