Linux shell编程学习笔记8:使用字符串

一、前言


字符串是大多数编程语言中最常用最有用的数据类型,这在Linux shell编程中也不例外。

本文讨论了Linux Shell编程中的字符串的三种定义方式的差别,以及字符串拼接、取字符串长度、提取字符串、查找子字符串等常用字符串操作,,以及反引号在echo 和 expr命令联合使用时的作用。

二、定义字符串

Linux Shell编程中的字符串可以用单引号,也可以用双引号,如果不包含空格,也可以不用引号。

(一)无引号字符串

实例:

user@host: ~ # var1=abc123

user@host: ~ # echo $var1

abc123

user@host: ~ #

变量var1的值abc123中不包括变格,因此在赋值可以不用引号。

(二)单引号字符串
 

单引号里的任何字符都会原样输出,变量在单引号字符串中无效,即使在变量名前加上$字符,变量仍不会被识别。


单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

实例1:单引号字符串中变量无效

user@host: ~ # alpha='abcd"

user@host: ~ # echo $alpha

abcd

user@host: ~ # echo '$alpha123'

$alpha123

user@host: ~ # echo 'alpha123'

alpha123

user@host: ~ # 

实例2:单引号字符串拼接

user@host : ~ # alpha='abcd'
user@host : ~ # echo $alpha 
abcd
user@host : ~ # echo '< '$alpha'>'
<abcd>
user@host : ~ # echo '<'${alpha}'>'
<abcd>
user@host : ~ # echo '<${alpha}> '
<${alpha}>
user@host : ~ # echo '<$alpha>'
<$alpha>
user@host : ~ # echo '<''>'
<>
user@host : ~ # 

(三)双引号字符串

在被双引号括起来的字符中,"$"、"\"和反引号是拥有特殊含义的,"$"代表引用变量的值,而反引号代表引用命令。

所以,双引号里可以有变量,可以出现转义字符。

实例1:双引号中的变量会被识别

user@host : ~ # alpha=“abcd”
user@host : ~ # echo $alpha 
abcd
user@host : ~ # echo "\$alpha=$alpha"
$alpha = abcd
user@host : ~ # echo "\$alpha = \"${alpha}\""
$alpha = "abcd"
user@host : ~ # 

在上面的实例中,输出$、双引号等需要使用转义字符,即在符号前加上\。

 

实例2:双引号拼接字符串

user@host : ~ # alpha='abcd'
user@host : ~ # echo $alpha 
abcd
user@host : ~ # echo "<""$alpha "">"
<abcd>
user@host : ~ # echo "<""${alpha} "">"
<abcd>

user@host : ~ #

三、取字符串长度

  (一)格式

 格式:${#string}

(二)实例:

user@host : ~ # alpha='abcd'
user@host : ~ # echo ${#alpha} 
4

user@host : ~ # echo ${#alpha[0]} 

-sh: syntax error: bad substitution

user@host : ~ #

网上有资料称:变量为字符串时,${#string} 等价于 ${#string[0]}。但在sh中测试无效。

四、提取子字符串

(一)格式

格式:${#string:n:m}

说明:n-起始字符索引值,字符串首字符索引值为0

           m-子串长度

(二)实例

user@host : ~ # alpha='abcd'
user@host : ~ # echo ${#alpha:0:2} 
ab

user@host : ~ # echo ${#alpha:0:8} 

abcd

user@host : ~ #

其中命令 echo ${#alpha:0:2}   是从首字符开始提取2个字符,结果是:ab

其中命令  echo ${#alpha:0:8}  是从首字符开始提取8个字符,结果是:abcd

从上例可知,如指定的子串长度超过母串长度,则截取至母串末。

五、查找子字符串

(一)格式

格式:expr index string substring

说明:

expr       :是UNIX/LINUX下的一个手工命令行计数器,用于计算表达式变量的值,一般用于整数值,也可用于字符串。

index      :表示要进行索引操作

string      :待查找的字符串

substring:要查找的子字符串

(二)实例

user@host : ~ # alpha='abcd'
user@host : ~ # expr index $alpha bc

2

user@host : ~ # echo 'expr index ${alpha} bc'

expr index ${alpha} bc

user@host : ~ # echo `expr index ${alpha} bc`

2

user@host : ~ #

d

在上例中,我们可以在命令行中使用命令 expr index $alpha bc 查找子字符串 ab 在字符串变量alpha值中的位置

如果要与echo命令配合使用的话,不能使用单引号,而需要使用反引号。

在命令 echo 'expr index ${alpha} bc' 中,  使用的是单引号,expr index ${alpha} bc 被当成字符串直接输出,所以命令执行结果是:expr index ${alpha} bc

在命令 echo `expr index ${alpha} bc` 中,使用的是反引号,expr index ${alpha} bc作为命令执行,所以命令执行结果是:2

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

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

相关文章

【2023年11月第四版教材】第18章《项目绩效域》(合集篇)

第18章《项目绩效域》&#xff08;合集篇&#xff09; 1 章节内容2 干系人绩效域2.1 绩效要点2.2 执行效果检查2.3 与其他绩效域的相互作用 3 团队绩效域3.1 绩效要点3.2 与其他绩效域的相互作用3.3 执行效果检查3.4 开发方法和生命周期绩效域 4 绩效要点4.1 与其他绩效域的相互…

20231005使用ffmpeg旋转MP4视频

20231005使用ffmpeg旋转MP4视频 2023/10/5 12:21 百度搜搜&#xff1a;ffmpeg 旋转90度 https://zhuanlan.zhihu.com/p/637790915 【FFmpeg实战】FFMPEG常用命令行 https://blog.csdn.net/weixin_37515325/article/details/127817057 FFMPEG常用命令行 5.视频旋转 顺时针旋转…

System Generator学习——时间和资源分析

文章目录 前言一、目标二、步骤三、步骤 1 &#xff1a;系统生成器的时序分析1、时序分析2、解决时间违规问题 四、步骤 2 &#xff1a;系统生成器中的资源分析总结 前言 在本节实验中&#xff0c;你将学习如何通过在 Simulink 中进行仿真来验证设计的功能&#xff0c;以确保在…

力扣第226翻转二叉数 c++三种方法 +注释

题目 226. 翻转二叉树 简单 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a;root [2,1,3] 输出&am…

常见的几种排序方式

常见的几种排序方式 1. 排序的概念2. 常见排序算法的实现2.1 插入排序2.1.1基本思想2.1.2 直接插入排序2.1.3 希尔排序( 缩小增量排序 ) 2.2 选择排序2.2.1基本思想2.2.2 直接选择排序:2.2.3 堆排序 2.3 交换排序2.3.1冒泡排序2.3.2 快速排序 2.4 归并排序2.4.1 基本思想2.4.2 …

知识图谱小白入门(1):neo4j的安装与CQL的使用

文章目录 序一、安装neo4j1.1 下载neo4j1.2 安装JDK1.3 BUG&#xff1a;dbms failed to start 二、CQL语法2.1 CQL语法创建节点查询节点创建关系查询关系2.2 习题 习题答案 序 知识图谱&#xff0c;是一种实体间的信息与关系知识的网状结构&#xff0c;借用图论中点与边的概念…

阿里云服务器镜像系统Anolis OS龙蜥详细介绍

阿里云服务器Anolis OS镜像系统由龙蜥OpenAnolis社区推出&#xff0c;Anolis OS是CentOS 8 100%兼容替代版本&#xff0c;Anolis OS是完全开源、中立、开放的Linux发行版&#xff0c;具备企业级的稳定性、高性能、安全性和可靠性。目前阿里云服务器ECS可选的Anolis OS镜像系统版…

【Java】猫和狗接口版本思路分析

目录 猫&#x1f431;和狗&#x1f415;&#xff08;接口版本&#xff09; 画图分析 案例代码 猫&#x1f431;和狗&#x1f415;&#xff08;接口版本&#xff09; 需求&#xff1a;对猫和狗进行训练&#xff0c;它们就可以跳高了&#xff0c;这里加入了跳高功能&#xff0…

Python常用功能的标准代码

后台运行并保存log 1 2 3 4 5 6 7 8 9 nohup python -u test.py > test.log 2>&1 & #最后的&表示后台运行 #2 输出错误信息到提示符窗口 #1 表示输出信息到提示符窗口, 1前面的&注意添加, 否则还会创建一个名为1的文件 #最后会把日志文件输出到test.log文…

阿里云服务器IP地址查询方法(公网IP和私网IP)

阿里云服务器IP地址在哪查看&#xff1f;在云服务器ECS管理控制台即可查看&#xff0c;阿里云服务器IP地址包括公网IP和私有IP地址&#xff0c;阿里云百科分享阿里云服务器IP地址查询方法&#xff1a; 目录 阿里云服务器IP地址查询 阿里云服务器IP地址查询 1、登录到阿里云服…

软件设计模式系列之二十五——访问者模式

访问者模式&#xff08;Visitor Pattern&#xff09;是一种强大的行为型设计模式&#xff0c;它允许你在不改变被访问对象的类的前提下&#xff0c;定义新的操作和行为。本文将详细介绍访问者模式&#xff0c;包括其定义、举例说明、结构、实现步骤、Java代码实现、典型应用场景…

卷积神经网络-卷积层

卷积神经网络 卷积神经网络&#xff08;convolutional neural network&#xff0c;CNN&#xff09;是一类包含卷积计算且具有深度结构的前馈神经网络&#xff0c;是深度学习的代表算法之一。卷积神经网络具有表征学习能力&#xff0c;能够按其阶层结构对输入信息进行平移不变分…

算法:强连通分量(SCC) Tarjan算法

强连通分量&#xff0c;不能再加任何一个点了&#xff0c;再加一个点就不是强连通了 vector<int>e[N]; int dfn[N],low[N],tot; bool instk[N]; int scc[N],siz[N],cnt; void tarjan(int x){//入x时,盖戳,入栈dfn[x]low[x]tot;q.push(x);instk[x]true;for(auto y:e[x]){i…

卷积神经网络-池化层和激活层

2.池化层 根据特征图上的局部统计信息进行下采样&#xff0c;在保留有用信息的同时减少特征图的大小。和卷积层不同的是&#xff0c;池化层不包含需要学习的参数。最大池化(max-pooling)在一个局部区域选最大值作为输出&#xff0c;而平均池化(average pooling)计算一个局部区…

新款UI动态壁纸头像潮图小程序源码

新款UI动态壁纸头像潮图小程序源码&#xff0c;不需要域名服务器&#xff0c;直接添加合法域名&#xff0c;上传发布就能使用。 可以对接开通流量主&#xff0c;个人也能运营&#xff0c;不需要服务器源码完整。整合头像&#xff0c;动态壁纸&#xff0c;文案功能齐全。 源码…

pyqt5使用经验总结

pyqt5环境配置注意&#xff1a; 安装pyqt5 pip install PyQt5 pyqt5-tools 环境变量-创建变量名&#xff1a; 健名&#xff1a;QT_QPA_PLATFORM_PLUGIN_PATH 值为&#xff1a;Lib\site-packages\PyQt5\Qt\plugins pyqt5经验2&#xff1a; 使用designer.exe进行设计&#xff1…

智慧公厕:将科技融入日常生活的创新之举

智慧公厕是当今社会中一项备受关注的创新项目。通过将科技融入公厕设计和管理中&#xff0c;这些公厕不仅能够提供更便利、更卫生的使用体验&#xff0c;还能够极大地提升城市形象和居民生活质量。本文将以智慧公厕领先厂家广州中期科技有限公司&#xff0c;大量的精品案例项目…

黑豹程序员-架构师学习路线图-百科:CSS-网页三剑客

文章目录 1、为什么需要CSS2、发展历史3、什么是CSS4、什么是SASS、SCSS 1、为什么需要CSS 作为网页三剑客的第二&#xff0c;CSS为何需要它&#xff0c;非常简单HTML只能完成页面的展现&#xff0c;但其做出来的页面奇丑无比。 随着网络的普及&#xff0c;人们的要求更高&…

cmip6数据处理之降尺度

专题一 CMIP6中的模式比较计划 1.1 GCM介绍全球气候模型&#xff08;Global Climate Model, GCM&#xff09;&#xff0c;也被称为全球环流模型或全球大气模型&#xff0c;是一种用于模拟地球的气候系统的数值模型。这种模型使用一系列的数学公式来描述气候系统的主要组成部分…

arm 汇编基础指令

实现1-100求和 .text .globl _start_start:mov r0, #1 i&#xff0c;i1mov r1, #100 条件变量i<100mov r2, #0 sumLoop: 循环cmp r0,r1 比较r0和r1的大小bhi stop 当r0>r1时&#xff0c;跳到stop标签a…