字符串详解
字符串可以由 单引号/双引号/无引号 包围。如下所示
>>
str1=hello
str2="hello"
str3='hello'
<<
三种形式的区别:
1)由单引号包围
字符原样输出,不对其中的变量进行解析。并且在字符串中不能出现单引号,即使加了转义字符也不行。
2)由双引号包围
如果字符串中存在变量,那么会对变量进行解析。可以存在双引号,只要由转义字符就行。
3)没有符号包围
如果有变量同样也会被解析,但是不能出现空格,否则,会认为空格后面的内容是其他变量或者字符串解析。
 
获取字符串长度
#!/bin/bash
str="hello world!"
echo ${#str}
字符串拼接
shell中字符串拼接不需要任何操作符,很简单粗暴。
#!/bin/bash
nick_name="mocun"
name="yinzm"
str1=$nick_name$name
str2="$nick_name $name"
str3=$nick_name" : "$name
str4="$nick_name : $name"
str5="${nick_name} : ${name}"
echo $str1
echo $str2
echo $str3
echo $str4
echo $str5
字符串截取
可以从左边开始,也可以从右边开始截取。
#!/bin/bash
str="hello,world!"
echo ${str:6:5}
echo ${str:6}
echo ${str:0-6:5}
echo ${str:0-6}

输出:

world

world!

world

world!

shell还支持指定字串进行截取

#!/bin/bash
url="https://www.google.com"
echo ${url#*://}
echo ${url#*//}

其中#用来指定字符,*为通配符的一种,表示任意长度的字符串。*chars的意思就是忽略左边的所有字符,直到chars,并且不包含chars。指定字串进行截取不能限定截取长度。

如果在字符串中有多处出现指定的字符,那么只会在第一次遇到指定字符的时候开始截取。如果想改成最后一次遇到指定字符开始截取,使用##*的方式。如下:

#!/bin/bash
url="https://www.google.com"
echo ${url#*w}
echo ${url##*w}

输出:

ww.google.com

.google.com

类似的,也可以截取指定字符左边的字串。具体语法可以看示例:

#!/bin/bash
url="https://www.google.com"
echo ${url%.*}
echo ${url%%.*}

输出:

https://www.google

https://www

Shell基础知识(四)的更多相关文章

  1. Linux shell基础知识(上)

    Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...

  2. Linux Shell 基础知识(一)

    1. 本文知识结构 2. shell 基础知识 2.1 shell 简单介绍 ​ GNU bash shell 能提供对 Linux 系统的交互式访问,一般来说,使用快捷键 Ctrl + Alt + ...

  3. Python基础知识(四)

    Python基础知识(四) 一丶列表 定义格式: 是一个容器,由 [ ]表示,元素与元素之间用逗号隔开. 如:name=["张三","李四"] 作用: 存储任意 ...

  4. shell基础知识---与监听服务器长连接端口状态

    从未写过脚本我的最近接了俩脚本的需求,就在这分享一下我的我学到基础知识主要就四部分内容 一.变量 变量的定义 string='字符串' string="字符串" num=808st ...

  5. Shell 基础知识和总结

    调试脚本 检查脚本语法错误 bash -n /path/to/some_script 调试执行 bash -x /path/to/some_script shell里的变量 本地变量:只对当前shel ...

  6. C# 基础知识 (四).C#简单介绍及托管代码

            暑假转瞬即逝,从10天的支教生活到1周的江浙沪旅游,在这个漫长的暑假中我经历了非常多东西,也学到了非常多东西,也认识到了非常多不足之处!闲暇之余我准备又一次进一步巩固C#相关知识,包含 ...

  7. shell基础知识总结

    1. shell 对于一台计算机而言,其硬件受系统内核的控制,使用者想要控制计算机,就必须有与系统内核进行通讯的手段.而shell就是使用者与计算机进行通讯的手段之一.从命名上看,shell其实是相对 ...

  8. shell基础知识讲解

    第1章 shell基础 1.1 什么叫做shell编程 shell编程也叫做bash高级编程语法 1.2 常见的shell命令解释器 bash            redhat和centos使用 d ...

  9. C语言基础知识(四)——位操作

    一.进制基础知识 1.通常,1字节(Byte)包含8位(bit).C语言用字节表示储存系统字符集所需的大小. 2.对于一个1字节8位的二进制数,最右边(第0位)是最低阶位,最左边(第1位)是最高阶位, ...

随机推荐

  1. Perhaps you are running on a JRE rather than a JDK

    在Eclipse中跑maven项目时,出现上面的问题: 1.有可能你的环境变量配置是在jre上面的,所以你要检查一下你配置文件,PATH和CLASSPATH都要检查 2.eclipse默认是跑在jre ...

  2. vue 路由拦截、axios请求拦截

    路由拦截 项目中,有些页面需要登录后才能进入,例如,在某页面A,用户在操作前需要先进入登录页(此时需要将上一页的地址(/survey/start)作为query存入login页面的地址中,如: htt ...

  3. Jmeter(三十三)_JsonPath表达式提取响应

    我们在用jmeter做接口测试的时候,有的时候会遇到一些复杂的json响应.比如多层list嵌套时的取值 一个简单的例子: $..Name:列出所有省份 $..Province[0].Name 提取P ...

  4. Linux系统本地yum源环境配置记录

    由于IDC的一些服务器没有外网,不能对外访问.所以打算部署一套内网的yum源环境,以供内网服务器使用.以下简单记录下操作过程: 1)下载centos6.9和centos7.3的镜像,并挂载 [root ...

  5. Python_每日习题_0001_数字组合

    # Topic: There are four digits: 1, 2, 3 and 4. # How many different three digits can be formed witho ...

  6. OC与JS的交互(iOS与H5混编)

    大神总结WKWebView的坑:https://mp.weixin.qq.com/s/rhYKLIbXOsUJC_n6dt9UfA 在开发过程中,经常会出现需要iOS移动端与H5混编的使用场景. iO ...

  7. 个人作业-Week1(新增详细说明)

    快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上. 如何提出有价值的问题? 请看这个文章:http://www.cnblogs.com/rocedu/p/5167941.html ...

  8. linux内核分析ELF文件分析实践报告

  9. github学习步骤

    组员1:    王文政      201303011159 作业网址 :https://github.com/1246251747/3/blob/master/jjj.txt 心得: 1.  申请gi ...

  10. Oracle 转移符问题

    注:select '''' from dual;    --输出一个单引号      select '''''' from dual;   --输出两个单引号      select '''''''' ...