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

    文章

    552

    浏览量

    20132
  • Shell
    +关注

    关注

    1

    文章

    358

    浏览量

    22903
  • Bash
    +关注

    关注

    0

    文章

    57

    浏览量

    10073
收藏 人收藏

    评论

    相关推荐

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

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

    如何在bash shell脚本中使用变量

    如果你使用编程语言编写过程序,那么一定接触过变量。而在 bash 脚本的编写时,变量也是一个很重要的概念。今天我们分享一下如何在 bash 脚本中使用变量。
    发表于 12-02 16:32 1670次阅读
    如何在<b class='flag-5'>bash</b> <b class='flag-5'>shell</b><b class='flag-5'>脚本</b>中使用变量

    shell编程之shell是什么

    。echo 是一条命令,用来输出文本字符串的。chmod +x filename编辑结束并保存后,如果要执行该脚本,必须先使其可执行:利用vi等文本编辑器编写Shell脚本的格式是固定
    发表于 11-26 16:00

    字符串处理

    基于字符串处理
    发表于 10-31 15:53

    Shell脚本编程笔记(二)

    本帖最后由 iysheng 于 2017-2-26 11:18 编辑 exec命令总结:脚本调试参数总结:字符串比较:shell数值比较:shell
    发表于 02-26 11:15

    云计算免费视频教程:Bashshell脚本编程详解

    节 文件行编辑工具sed-简介和行定址操作第20节 文件行编辑工具sed-字符字符串替换操作第21节 文件行编辑工具sed-行处理的复杂操作第22节 文件处理工具awk-awk模式简
    发表于 06-21 15:58

    bash shell 中如何区别 $()和${}和$(())和(())

    :${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt
    发表于 12-06 11:39

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

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

    字符串处理函数的作用是什么

    / 字符串处理函数 / stract函数 字符串连接函数例:printf(“%s”, stract(str1, str2));strcpy(字符串
    发表于 02-25 06:41

    Shell Script

    文本文件保存为.sh后缀,用于标记这是一个shell脚本,如hello.sh。 3、hello world 然后我们向这个shell脚本中添加第一行
    发表于 03-31 09:40

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

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

    BASH shell脚本篇—条件命令

    这篇文章介绍下BASH shell中的条件相关的命令,包括:if, case, while, until, for, break, continue。
    的头像 发表于 10-11 15:21 319次阅读
    <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 354次阅读

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

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

    shell脚本基本命令

    Shell脚本是一种可执行文件,它包含了一组用某种特定语言编写的命令,这些命令可以被解释器(如bash)执行。以下是一些常见的shell脚本
    的头像 发表于 11-08 10:08 711次阅读