字符串详解
字符串可以由 单引号/双引号/无引号 包围。如下所示
>>
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. C# SignalR 即时通信

    MSDN教程:https://docs.microsoft.com/en-us/aspnet/signalr/ 个人博客:http://www.cnblogs.com/zhili/p/SignalRQ ...

  2. Intellij IDEA的下载和使用(针对学生的免费使用计划)

    一.下载和使用授权(针对学生) 1.下载 可以在Intellij IDEA官网上下载需要的版本.下载地址:https://www.jetbrains.com/idea/ 2.学生免费试用 首先,你得现 ...

  3. JVM规范系列第1章:引言

    如果你还没下载<Java虚拟机规范>这本书,那么先点击这里下载再一块儿看吧. 前言 Java 虚拟机是一个抽象化的机器,整个规范中提及的 Java 虚拟机都是抽象化的概念,而不是特指 Or ...

  4. B. Equations of Mathematical Magic

    思路 打表找规律,发现结果是,2的(a二进制位为1总数)次方 代码 #include<bits/stdc++.h> using namespace std; #define ll long ...

  5. D. Boxes Packing

    链接 [http://codeforces.com/contest/1066/problem/D] 题意 题目大意 n个物品m个篮子每个篮子容量为k 每个物品重量为a[i] 问能装多少物品 这个人是强 ...

  6. 终于做完了这个pj

    首先要说这个博客网站实在是功能太弱!不知道为什么还要每次写博客.直接交作业不好吗- -b 1.估计时间: 看见这个任务就觉得很难啊,估计装vs2012就得半天,然后上学期选修的c++基本上都忘光了,本 ...

  7. Linux内核分析第二周:操作系统是如何工作的

    第一讲 函数调用堆栈 计算机是如何工作的? (总结)——三个法宝 1,存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 2,函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆 ...

  8. Linux内核 实践二

    实践二 内核模块编译 20135307 张嘉琪 一.实验原理 Linux模块是一些可以作为独立程序来编译的函数和数据类型的集合.之所以提供模块机制,是因为Linux本身是一个单内核.单内核由于所有内容 ...

  9. CSS编码规则

    /* 和HTML一样使用两个空格来代替制表符 */ div { /* 为了代码的易读性,在每个声明块的左花括号前添加一个空格 */' padding: 15px; /* 每个声明语句的:后应该插入一个 ...

  10. my项目的总结2015.8.26编

    这已经是上上个星期的事了,现在回顾一下: 负责的模块是"my",更精准的说应该是my里面的个人信息管理 由于项目分域,模块已经分好了,涉及到的只是在现有的基础上解决分域后遗留的历史 ...