• shell 变量 入门


    1 自定义全局变量

    2.1 父子Shell环境介绍

    例如: 有2个Shell脚本文件 parent.sh 和 child.sh

    如果 在 parent.sh 脚本文件中执行了child.sh脚本文件, 那么parent.sh就是父Shell环境, child.sh就是子Shell环境

    2.2 自定义全局变量介绍

    就是在当前脚本文件中定义全局变量, 这个全局变量可以在当前Shell环境与子Shell环境中都可以使用

    2.3 自定义全局变量语法

    export var_name1 var_name2
    
    • 1

    2.4 DEMO

    测试全局变量在子Shell中是否可用, 在父Shell中是否可用

    1: 创建2个脚本

    touch parent.sh
    touch child.sh
    
    • 1
    • 2

    2:修改parent脚本文件

    vi parent.sh
    
    #!/bin/bash
    name="parentName"
    export name
    #调用子脚本文件
    sh child.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3: 修改child脚本文件

    vi child.sh
    
    #!/bin/bash
    echo "parent 中定义的name: ${name}"
    
    • 1
    • 2
    • 3
    • 4

    4: 执行父脚本

    sh parent.sh
    
    • 1

    5: 结果
    在这里插入图片描述

    2 特殊变量 $n

    2.1 语法

    $n
    
    • 1

    2.2 含义

    用于接收脚本文件执行时传入的参数
    $0 用于获取当前脚本文件名称的
    $1~$9, 代表获取第一输入参数到第9个输入参数
    第10个以上的输入参数获取参数的格式: ${数字}, 否则无法获取
    
    • 1
    • 2
    • 3
    • 4

    2.3 执行脚本文件传入参数语法

    sh 脚本文件 parm1 parm2 ...
    
    • 1

    2.4 demo

    创建脚本文件demo.sh文件, 并在脚本文件内部执行打印脚本文件名字, 第一个输入参数, 第二个输入参数

    vim demo.sh
    
    #!/bin/bash
    
    #打印当前脚本文件名称
    echo "当前脚本文件名称: ${0}"
    #打印输入参数
    echo "第一个输入参数: ${1}"
    echo "第二个输入参数: ${2}"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    执行:

    在这里插入图片描述

    3 特殊符号变量 $#

    3.1 语法

    $#
    
    • 1

    3.2 含义

    获取所有输入参数的个数

    3.3 demo

    打印demo.sh输入参数的个数。

    vim demo.sh
    
    
    #!/bin/bash
    
    #打印当前脚本文件名称
    echo "当前脚本文件名称: ${0}"
    
    #输入参数的个数为
    echo "输入参数的个数为: ${#}"
    
    
    #打印输入参数
    echo "第一个输入参数: ${1}"
    echo "第二个输入参数: ${2}"
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述

    4 特殊变量 $* $@

    4.1 语法

    $*、$@
    
    • 1

    4.2 含义

    1.不使用双引号括起来, 功能一样
      $*和$@获取所有输入参数,格式为: $1 $2 ... $n
    2.使用双引号括起来
      "$*"获取的所有参数拼接为一个字符串, 格式为: "$1 $2 ... $n"
      "$@"获取一组参数列表对象, 格式为: "$1" "$2" ... "$n"
      使用循环打印所有输入参数可以看出区别
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    循环语法:

    for var in 列表变量
    do		# 循环开始
       命令  # 循环体
    done    # 循环结束
    
    • 1
    • 2
    • 3
    • 4

    4.3 demo

    在demo.sh中循环打印输出所有输入参数, 体验$*$@的区别

    #!/bin/bash
    
    #打印当前脚本文件名称
    echo "当前脚本文件名称: ${0}"
    #输入参数的个数为
    echo "输入参数的个数为: ${#}"
    #输出所有输入后的参数
    echo '使用$*直接输出:' ${*}
    echo '使用$@直接输出:' ${@}
    #循环输出
    echo '循环遍历输出$*所有参数:'
    for temp in "$*"
    do
    echo ${temp}
    done
    
    echo '循环遍历输出$@所有参数:'
    for temp in "$@"
    do
    echo ${temp}    
    done
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在这里插入图片描述

    5 特殊符号变量 $?

    5.1 命令

    $?
    
    • 1

    5.2 含义

    用于获取上一个Shell命令的退出状态码, 或者是函数的返回值

    5.3 demo

    在这里插入图片描述

  • 相关阅读:
    面试算法32:有效的变位词
    解决开源项目资金问题的 8 种方法
    为什么分布式系统这么火?
    OTA: Optimal Transport Assignment for Object Detection 原理与代码解读
    8.1 Windows驱动开发:内核文件读写系列函数
    Redis注解式开发结合SSM项目使用与Quartz框架介绍以及击穿、穿透、雪崩问题解决
    修剪二叉搜索树
    【计算机网络】数据链路层
    【学习笔记之vue】vue项目放在springboot项目里后,刷新页面会显示whitelabel error page
    pytorch学习笔记4
  • 原文地址:https://blog.csdn.net/qq_34125999/article/details/125436130