• 【博学谷学习记录】超强总结,用心分享|Shell字符串


    字符串的3种格式

    1. 单引号方式
    2. 双引号方式, 推荐
    3. 不用引号方式
    [root@node1 ~] name=abc
    [root@node1 ~] name2='abc'
    [root@node1 ~] name3="abc" # 推荐
    [root@node1 ~] 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3种格式的区别

    1. 无引号: 会识别${变量},但是中间不能有空格,有空格,命令会被切割
    [root@node1 ~] name=aa bb cc
    -bash: bb: 未找到命令
    
    • 1
    • 2
    1. 单引号: 所有字符都会都会被原样输出,${变量}不会被识别
    [root@node1 ~] name2='abc'
    [root@node1 ~] echo $name2
    abc
    [root@node1 ~] echo '名字2是: ${name2}'
    名字2是: ${name2}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 双引号: 可以识别${变量},中间可以有空格
    [root@node1 ~] name2='abc'
    [root@node1 ~] echo $name2
    abc
    [root@node1 ~] echo "名字2是: ${name2}"
    名字2是: abc
    
    • 1
    • 2
    • 3
    • 4
    • 5

    获取字符串的长度

    ${#字符串变量名}

    [root@node1 ~] echo $name
    abc
    [root@node1 ~] echo ${#name}
    3
    
    • 1
    • 2
    • 3
    • 4

    字符串拼接

    1. 无符号拼接
    2. 双引号拼接
    [root@node1 ~] var1=abc
    [root@node1 ~] var2=def
    [root@node1 ~] echo $var1$var2 #无符号拼接
    abcdef
    [root@node1 ~] echo ${var1}${var2} #无符号拼接
    abcdef
    [root@node1 ~] echo "${var1}${var2}" #双引号拼接
    abcdef
    [root@node1 ~] echo ${var1}"&"${var2} #混合拼接
    abc&def
    [root@node1 ~] echo ${var1}'&'${var2} #混合拼接
    abc&def
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    字符串截取语法

    格式说明
    ${变量名:start:length}从 string 字符串的左边第 start 个字符开始,
    向右截取 length 个字符。
    ${变量名:start}从 string 字符串的左边第 start 个字符开始截取,直到最后。
    ${变量名:0-start:length}从 string 字符串的右边第 start 个字符开始,
    向右截取 length 个字符。
    ${变量名:0-start}从 string 字符串的右边第 start 个字符开始截取,直到最后。
    ${变量名#*chars}从 string 字符串第一次出现 _chars 的位置开始,
    截取 _chars 右边的所有字符。
    ${变量名##*chars}从 string 字符串最后一次出现 _chars 的位置开始,
    截取 _chars 右边的所有字符。
    ${变量名%chars*}从 string 字符串最后第一次出现 chars_ 的位置开始,
    截取 chars_ 左边的所有字符。
    ${变量名%%chars*}从 string 字符串第一次出现 chars_ 的位置开始,
    截取 chars_ 左边的所有字符
    [root@node1 ~] var1=abcdefg
    [root@node1 ~] echo $var1:2:4 #错误表达式
    abcdefg:2:4
    [root@node1 ~] echo ${var1:2:4} 
    cdef
    [root@node1 ~] echo ${var1:2}
    cdefg
    [root@node1 ~] echo ${var1:0-2:2} #0-start是固定写法
    fg
    [root@node1 ~] echo ${var1:-2:2} #不能直接写成-start,会失效,直接显示全部字符串
    abcdefg
    [root@node1 ~] echo ${var1:0-2}
    fg
    
    
    
    [root@node1 ~] var2=aabbccdd
    [root@node1 ~] echo ${var2#*c}
    cdd
    [root@node1 ~] echo ${var2##*c}
    dd
    [root@node1 ~] echo ${var2%c*}
    aabbc
    [root@node1 ~] echo ${var2%%c*}
    aabb
    [root@node1 ~] 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
  • 相关阅读:
    如何看待AIGC技术?
    当 K8s资源管理 与 JVM参数(Xms、Xmx)相遇
    古彝文识别:文化遗产的数字化之旅
    力荐,京东首席架构师:亿级流量架构的核心技术文档免费分享
    【C++STL基础入门】list的运算符重载和关于list的算法
    u盘里的文件损坏了怎么修复?
    金属纳米颗粒图像分割和计数
    借助新电商平台,湖北荷塘三宝直达全国餐桌
    VSCode 设置代码格式化
    9、MyBatis缓存
  • 原文地址:https://blog.csdn.net/xz842913787/article/details/126688458