0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

BASH shell脚本篇—字符串处理

冬至子 来源:CSDN 作者:谷公子 2023-10-16 11:25 次阅读

Bash字符串也是一种数据类型,它用于表示文本而不是数字,它是一组可能还包含数字的字符的组合。

如果数字想要表示为字符串,那么需要程序员用引号将数字包起来,以便Bash将数据视为字符串。

BASH对字符串的操作有很多方式,以下记录了其中一些常用的用法。

1.字符串基本操作

字符串比较的命令有:

# 等于运算符:用于检查两个字符串是否相等
语法:Operand1 = Operand2
# 不等于运算符:用于检查两个字符串不相等
语法:Operand1 != Operand2
# 小于运算符:是一个条件运算符,用于检查string1是否小于string2
语法:Operand1   Operand2
# 大于运算符:用于检查string1是否大于string2
语法:Operand1  > Operand2
# 检查字符串长度是否大于零
语法:[ -n Operand ]
# 检查字符串长度是否等于零
语法:[ -z Operand ]

2. 字符串长度计算

字符串中的字符总数表示字符串的长度。我们有时需要判断字符串的长度才能执行特定任务。在Bash脚本中,可以使用以下几种方法来获取字符串的长度。

# 方法1
${#str}  
# 方法2
expr length "$str"  
# 方法3
expr "$str" :'.*'  
# 方法4
$str | wc -c  
# 方法5
$str | awk '{print length}'
# 注意:请注意在$str周围使用双引号。如果字符串中包含空格,则双引号非常重
#       要。否则,可以忽略它。

例子如下

# The script is:
str="str len"
echo "Method1:" ${#str}
length=`expr length "$str"`
echo "Method2:" $length
length=`expr "$str" : '.*'`
echo "Method3:" $length
length=`echo -n $str | wc -c`
echo "Method4:" $length
length=`echo -n $str | awk '{print length}'`
echo "Method5:" $length
 
# The result is:
Method1: 7
Method2: 7
Method3: 7
Method4: 7
Method5: 7

3. 拆分字符串

有时候需要根据分隔符来拆分字符串数据,bash没有直接的拆解字符串内置函数,但可以使用定界符在bash脚本中拆分字符串数据。分隔符可以是单个字符,也可以是包含多个字符的字符串。

我们可以使用**IFS变量来拆分,**IFS是一个特殊的内部变量,用于将字符串拆分为单词。**IFS变量称为“内部字段分隔符”,它确定Bash如何识别边界。**IFS用于分配分隔字符串的特定定界符[IFS ='']。空格是$IFS的默认值。

但是,也可以使用t,n,-等值作为分隔符。分配定界符后,可以通过两个选项读取字符串:-r和-a。即,read -ra ARR <<< "str"。在这里,选项-r用于定义反斜杠(),它是字符而不是转义字符。-a选项用于定义将单词(用IFS分隔)分配给从零开始的数组顺序索引。然后,应用bash for循环来访问列表,这些列表被拆分为一个数组。

例子如下:

# The script is:
str="gabc,23ab,45,abc789abcend, jj kk"
IFS="," #setting "," as delimiter
read -ra array < < < "$str" #reading str as an array as tokens separated by IFS
declare -p array # print array content
 
# The result is:
declare -a array='([0]="gabc" [1]="23ab" [2]="45" [3]="abc789abcend" [4]=" jj kk")'

拆分字符串还有其它方式,这只是其中一种。

4. 提取子字符串

子字符串是字符串中的字符序列,Bash提供了一个从字符串提取信息的选项,可以使用多种方法提取数字或给定的字符串。字符串提取的语法为:

${variable:offset:length}
# 其中:
# - variable是包含字符串的变量名称
# - offset用于指定从何处开始提取字符串的位置,也可以是负的,反向提取
# - length用于指定从偏移量开始执行的字符范围
# 分配长度是可选的。如果未提供length,则子字符串的结尾将是字符串的结尾

例子如下:

# The script is:
str="welcome to the world"
echo ${str:0:10}
echo ${str:(-9)}
 
# The result is:
welcome to
the world

5. 连接字符串

将两个或多个字符串添加或连接在一起,这称为字符串连接。bash中字符串连接的格式为:

# 方法1:
str3="$str1$str2"
# 此命令将串联str1和str2变量的值,并将其存储在第三个变量str3中
 
# 方法2:
newstr="${str} newstr"
# 此命令将字符串变量的值与其它字符串拼接在一起
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 字符串
    +关注

    关注

    1

    文章

    578

    浏览量

    20508
  • Shell
    +关注

    关注

    1

    文章

    365

    浏览量

    23359
  • Bash
    +关注

    关注

    0

    文章

    57

    浏览量

    10181
收藏 人收藏

    评论

    相关推荐

    bash脚本中检查子字符串的方法

    我们在写 bash 脚本的时候,假如有一个字符串,我们想检查其中是否包含另一个子字符串,那这个时候需要怎样做呢?
    发表于 11-24 15:25 1622次阅读
    <b class='flag-5'>bash</b><b class='flag-5'>脚本</b>中检查子<b class='flag-5'>字符串</b>的方法

    如何在bash中分割字符串

    假设我们有一个由逗号或者下划线隔开的多个单词组成的字符串,需要拆分这个字符串提取各个单词。
    发表于 12-07 17:10 3714次阅读

    C++字符串string

    string是C++编程语言中的字符串。在C++中字符串处理可以使用c语言字符串形式char *,也可以使用string类格式。
    的头像 发表于 07-10 00:26 1278次阅读
    C++<b class='flag-5'>字符串</b>string

    Linux Shell系列教程之Shell字符串用法

    Shell字符串用法Shell中的字符串可以用引号包起来,也可以不用引号。用引号的话可以用双引号,也可以用单引号。其单双引号的区别跟PHP相类似。接下来给大家介绍下
    发表于 08-29 16:01

    字符串的表示

    字符串的表示  随着计算机在文字处理与信息管理中的广泛应用, 字符串已成为最常用的数据类型之一, 许多计算机中都提供字符串操作功能, 一些计算机还给出读写字
    发表于 10-13 17:11 3065次阅读
    <b class='flag-5'>字符串</b>的表示

    字符字符串的显示原理

    字符字符串的显示原理     1.字符的表示方法    现代计算机不仅处理数值领域的问题,而且处理大量非数值领域的问题。这样一来,必然要
    发表于 04-13 11:38 1w次阅读

    strtok拆分字符串

    就是字符格式。有些场景需要使用多个处理器协同工作,比如单片机+openmv,它们之间需要通信,可以采用字符格式的编码方式。操作字符串,无非是两件事儿:生成
    发表于 01-13 15:46 8次下载
    strtok拆分<b class='flag-5'>字符串</b>

    C语言-字符串处理

    字符串在C语言里使用非常多,因为很多数据处理都是文本,也就是字符串,特别是设备交互、web网页交互返回的几乎都是文本数据。 这篇文章就介绍字符串定义、和基本
    的头像 发表于 08-14 10:05 1749次阅读

    平化字符串处理方法简介

    这里介绍一组有用的字符串处理方法,即平化至字符串和从字符串还原。
    的头像 发表于 09-26 10:20 2265次阅读

    介绍Shell判断字符串包含关系的几种方法

    bash 脚本中,有不止一种检查子字符串的方法,我们今天介绍一些简单的例子,然后在分享一个常用的 bash 脚本
    的头像 发表于 05-12 15:58 2198次阅读

    BASH shell脚本篇—条件命令

    这篇文章介绍下BASH shell中的条件相关的命令,包括:if, case, while, until, for, break, continue。
    的头像 发表于 10-11 15:21 617次阅读
    <b class='flag-5'>BASH</b> <b class='flag-5'>shell</b><b class='flag-5'>脚本篇</b>—条件命令

    BASH shell脚本篇—函数

    函数是代码重用的最重要方式。Bash函数可以定义为一组命令,在bash脚本中多次调用。
    的头像 发表于 10-20 16:31 1098次阅读

    BASH shell脚本篇—文件处理介绍

    Bash Shell脚本中,可以使用多种方法来对文件进行操作,包括读取文件或写入文件。
    的头像 发表于 10-23 16:51 623次阅读

    字符串如何转换成日期型

    随着计算机威廉希尔官方网站 的不断发展,我们经常遇到需要处理日期的情况。在编程中,字符串是最常见的日期输入格式,在许多情况下,我们需要将字符串转换为日期类型以便进行日期计算和比较。本篇文章将详细介绍
    的头像 发表于 11-17 16:27 9971次阅读

    labview中怎么对字符串中的进行实时处理

    LabVIEW是一种用于开发控制、测试和测量系统的可视化编程环境,它提供了许多处理字符串的功能。在LabVIEW中,可以使用不同的函数和工具来实时处理字符串。下面我将详细介绍一些常见的
    的头像 发表于 12-26 14:12 1858次阅读