Shell学习之路 -- 字符串操作详解

字符串简介

我相信对字符串的操作,是所有开发人员在开发过程中面对的最多的操作之一,在任何一个常规的系统、编程语言或者脚本上对于字符串的操作都是必不可少,字符串也是Shell中最常用的数据类型之一。

字符串(String)定义:简单的说,就是一系列字符的组合

Shell中的字符串

Shell中的字符串分为三种形式,分别是" " 双引号形式,' '单引号形式,以及没有任何引号修饰的形式,这三种不同形式的字符串在shell脚本解析的时候是会有区别的,接下来会进行详细的说明
举例说明:

str1="这是一个双引号括起来的字符串"
str2='这是一个单引号括起来的字符串'
str3=这是一个啥也没有的字符串

废话不多说直接上代码

#!/bin/bash
# !注意shell中一般变量都是大写字符,为了显示方便 我使用了小写字符
# 打印字符串
A=100

# 双引号
str1="这是一个双引号括起来的字符串,看看能取到A的值吗? A = $A,看看能输出双引号吗?\" "

# 单引号(此处会报错 无法进行转义)
str2='这是一个单引号括起来的字符串,看看能取到A的值吗? A = $A,看看能输出单引号吗\' '

# 没有引号(内部出现空格的话会无法解析)
str3=这是一个没有引号字符串,看看能取到A的值吗?A=$A

# 最终结果
echo "str1 = $str1" 
echo "str2 = $str2"
echo "str3 = $str3"

最终结果:

[root@hadoop100 shell]# ./stringShell.sh
str1 = 这是一个双引号括起来的字符串,看看能取到A的值吗? A = 100,看看能输出双引号吗?"
str2 = 这是一个单引号括起来的字符串,看看能取到A的值吗? A = $A,看看能输出单引号吗?
str3 = 这是一个没有引号字符串,看看能取到A的值吗A=100

在这里插入图片描述
从打印出来的结果,可以得出的结论是:

1)双引号包裹的字符串的特点是:

  • 部分字符串原样输出,其中的变量会被解析,然后在输出变量对应的值
  • 双引号的包括内部的字符串可以出现转义字符

2)单引号包裹的字符串的特点是:

  • 字符串内部的变量会被解析,但是其内部无法进行转义字符的输入

3) 没有引号的字符串

  • 字符串内部变量会被解析,但是其内部不能出现空格,出现空格会造成无法解析的错误,
    因为shell会自动以空格前的字符串是一个完整的字符串,不会去解析后面剩余的字符串

获取字符串长度

# 语法
${#string_name}

在此处计算上面str1的长度

echo "str1Length = ${#str1}"

输出结果为:

str1Length = 45 

字符串的拼接

shell脚本中字符串拼接非常简单,不需要任何的连接符,直接写在一起就行了

示例代码,此处使用命令行传参或者说位置参数

#!/bin/bash

echo "拼接字符串: $1 $2"

在命令行输入运行:
./shellString.sh 字符串1 字符串2

最终结果:
拼接字符串结果
需要注意的是,由于没有引号包裹的字符串存在空格后不解析的问题,如果不加引号调用字符串,需要使用如下调用:

# 中间不能有空格
echo 拼接字符串: $1$2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值