• 【博学谷学习记录】超强总结,用心分享|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
  • 相关阅读:
    怎样去掉win11快捷方式的小箭头
    接口测试实战| GET/POST 请求区别详解
    数字孪生在工业制造中的应用领域及技术体系构建
    Spring - 框架相关内容2
    MySQL 免安装版安装配置&忘记密码时,重置密码
    RabbitMQ从0到1完整学习笔记二:《高级篇》
    Linux的介绍和安装
    AlexNet网络复现
    C++实现std::bind
    (C语言)strcat函数详解与模拟实现与strncat函数详解
  • 原文地址:https://blog.csdn.net/xz842913787/article/details/126688458