• Linux扩展篇之Shell编程二(变量)


    变量

    1. 系统预定义变量

    常用系统变量:$HOME、$PWD、$SHELL、$USER 等
    查看当前用户主目录

    • 方法1

    [root@hadoop100 ~]# echo $HOME

    • 方法2

    [root@hadoop100 ~]# printenv HOME

    显示当前Shell中所有的变量

    [root@hadoop100 ~]# set

    查看当前所有全局环境变量

    • 方法1:

    [root@hadoop100 ~]# env

    • 方法2:

    [root@hadoop100 ~]# printenv

    2. 自定义变量

    2.1 基本语法

    1. 定义变量:变量名=变量值,注意(=号前后不能有空格)`
    2. 撤销变量:unset 变量名
    3. 声明静态变量:readonly 变量,注意:不能 unset

    2.2 变量定义规则

    1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写
    2. 等号两侧不能有空格
    3. 在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
    4. 变量的值如果有空格,需要使用双引号或单引号括起来。

    2.3 案例实操

    1. 定义变量 A

    在这里插入图片描述

    1. 给变量 A 重新赋值

    在这里插入图片描述

    1. 撤销变量 A

    在这里插入图片描述

    1. 声明静态的变量 B=2,静态不能 unset 和修改

    在这里插入图片描述

    1. 在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算

    在这里插入图片描述

    1. 变量的值如果有空格,需要使用双引号或单引号括起来

    在这里插入图片描述

    1. 在 hello.sh 文件中增加 echo $B

    #!/bin/bash
    echo “hello world!”
    echo $B

    在这里插入图片描述
    注意: 这时,我们执行 hello.sh 时,只输出了 hello world!,并未输出变量 B 的内容。原因是:变量B刚定义时是一个局部变量,而我们使用方式2(参考扩展篇第一章)执行 hello.sh。相当于当前 shell 中打开一个子 shell 来执行脚本内容,所以局部变量在子 shell 中无效。我们需要将其变成全局变量才可使用

    1. 使用 export 把 B 变量提升为全局环境变量,供其他 Shell 程序使用

    在这里插入图片描述

    3. 特殊变量

    3.1 $n

    基本语法:$n

    n值功能描述
    $0代表该脚本名称
    $1-$9代表第一到第九个参数,十以 上的参数
    ${10}十以上的参数需要用大括号包含

    案例实操

    修改 hello.sh内容,如下所示:
    #!/bin/bash
    echo ‘==$n
    echo “hello world!”
    echo scpipt name: $0
    echo 1st paramater: $1
    echo 2nd paramater: $2

    在这里插入图片描述

    3.2 $#

    基本语法:$#

    • 功能描述:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性。

    案例实操

    在 hello.sh脚本中添加下面内容:
    echo paramater number:$#

    在这里插入图片描述

    3.3 $*、$@

    基本语法

    • $ * :这个变量代表命令行中所有的参数,$* 把所有的参数看成一个整体)
    • $@ :这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区分对待)

    案例实操

    在 hello.sh脚本中添加下面内容:
    echo $*
    echo $@

    在这里插入图片描述
    两者的区别

    
    #!/bin/bash
    echo '=============$*============'
    for para in "$*"
    do      
            echo $para
    done
    echo '=============$*============'
    for para in "$@"
    do
            echo $para
    done
    ~     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    3.4 $?

    基本语法:$?
    最后一次执行的命令的返回状态。

    • 如果这个变量的值为 0,证明上一 个命令正确执行;
    • 如果这个变量的值为非 0,则证明上一个命令执行不正确了。

    案例实操

    在这里插入图片描述

  • 相关阅读:
    求logx(c++基础)
    【linux进程(五)】进程间切换以及环境变量问题
    【C++模块实现】| 【04】配置模块
    Flutter:定位装饰权重组件
    基于springboot实现校友社交平台管理系统项目【项目源码+论文说明】
    python df.apply()函数
    Java_Jdbc
    主成分分析;主成分回归分析——Hald水泥问题;主成分分析案例——各地区普通高等教育发展水平综合评价;matlab
    查看BIOS 传递过来的acpi 表
    关于英文BALL的一些地道说法和用法,你知多少?
  • 原文地址:https://blog.csdn.net/qq_40926887/article/details/126060058