• 【Shell篇二】Shell变量与字符串


    在这里插入图片描述



    一、Shell变量

    1、定义变量

    var_url="www.9527.com"
    
    • 1
    • 变量名和等号之间不能有空格
    • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
    • 中间不能有空格,可以使用下划线 _
    • 不能使用标点符号和bash里的关键字(help查看保留关键字)

    2、变量分类

    • 全局变量(环境变量)
    • 局部变量:只能在创建它们的Shell函数或Shell脚本中使用
    **查看所有变量
    [root@loaclhost~] set
    BASH=/bin/bash
    name=9527
    HOME=/root
    …………
    
    **查看全局变量
    [root@loaclhost~]env
    USER=root
    SHELL=/bin/bash
    …………
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    自定义环境变量

    export 变量名=value
    变量名=value ; export 变量名
    declare - x 变量名=value
    -----------------------------
    [root@loaclhost~]declare -x llg=9527
    **unset取消变量
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    以上是暂时设定环境变量,永久生效要加在用户家目录下的.bashrc和.bash_profile文件中。

    查看变量

    echo $变量名
    printf $变量名
    
    • 1
    • 2

    具体环境变量的相关配置文件:
    在这里插入图片描述

    3、使用变量$
    在定义过的变量名前加美元符号,花括号不是必须,但加花括号可帮助解释器识别变量的边界。

    echo $var_url
    
    #加{}区分变量边界
    echo ${var_url}Request
    
    • 1
    • 2
    • 3
    • 4

    4、二次赋值

    a=1
    echo $a
    a=2
    echo $a
    
    • 1
    • 2
    • 3
    • 4

    4、只读变量readonly

    [root@localhost~]vi test.sh
    @!/bin/bash
    var="www.9527.com"
    readonly var
    var="www.baidu.com"
    
    [root@localhost~]./test.sh
    /bin/bash: This variable is read only.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    5、删除变量unset

    [root@localhost~]vi test.sh
    @!/bin/bash
    var="www.9527.com"
    unset var
    echo $var
    
    [root@localhost~]./test.sh
    //无输出
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    二、Shell字符串

    1、字符串
    Shell中的字符串可以单引号,也可双引号,也可不用引号

    2、单引号与双引号
    单引号里的东西全部原样输出,单引号的变量是无效的
    单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),只能成对出现,用于字符串拼接

    [root@localhost~]name=9527
    [root@localhost~]echo '代号,'$name'!'
    代号,9527!
    [root@localhost~]echo '代号,$name!'
    代号,$name!
    
    • 1
    • 2
    • 3
    • 4
    • 5

    双引号中可以有变量,也可以有转义字符

    [root@localhost~]name=9527
    [root@localhost~]echo "代号,"$name""
    代号,9527
    [root@localhost~]echo "代号,$name"
    代号,9527
    
    这里有个坑爹的地方,报错-bash: !": event not found,懒得转义感叹号了
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    字符串可不用引号,所以下面的方式最舒服

    [root@localhost~]echo 代号,$name!
    代号,9527!
    
    • 1
    • 2

    字符串的基本操作
    [root@localhost~]string=abcdef
    
    **获取字符串长度
    [root@localhost~]echo ${#string}
    6
    
    **截取字符串
    [root@localhost~]echo ${string:0:2}
    ab
    
    **查找子字符串位置
    [root@localhost~]echo `expr index $string a`
    1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    3、注释

    #单行注释
    
    :<<EOF
    注释内容……
    注释内容……
    注释内容……
    EOF
    多行注释中,EOF可换成其他字母或者符号,首位相同即可
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    此外,调试脚本过程中,也可把暂时不用的一段代码用花括号括起来,定义成一个函数,没调用这个函数也就不执行了,效果一样。

  • 相关阅读:
    基于java+SpringBoot+HTML+Mysq在线选课系统设计与实现
    【排序算法】详解冒泡排序及其多种优化&稳定性分析
    2022.9.30
    【数据结构】字符串匹配(kmp算法)
    微信小程序首页-----布局(详细教程赶快收藏吧)
    13.文件输入/输出
    力扣:300.最长递增子序列
    2021 华数杯全国大学生数学建模竞赛A题-电动汽车无线充电优化匹配研究(附带赛题解析&获奖论文及Python代码)
    Java集合类ArrayList的应用-杨辉三角的前n行
    9.2.1 YEAR类型
  • 原文地址:https://blog.csdn.net/llg___/article/details/126270762