Bash脚本中的特殊变量及应用场景详解

作者:

文章目录
  • $0、$1、$2 … $9、${10}… ​作用​:获取脚本或函数的参数。 ​典型用途​: # script.sh echo “脚本名称: $0” echo “第一个参数: $1” echo “第二个参数: $2” ​运行示例​: ./script.sh hello world ​输出​: 脚本名称: ./script.sh第一个参数: hello第二个参数: world $# ​作用​:获取传递给脚本或函数的参数个数。 ​典型用途​: if [ $# -eq 0 ]; then echo “错误:请提供参数!” exit 1 fi $* 和 $@ ​作用​:获取所有参数。 $*:所有参数合并成一个字符串("$1 $2 $3 …")。 $@:每个参数单独处理("$1" "$2" "$3" …),适用于循环遍历。 ​典型用途​: for arg in “$@”; do echo “参数: $arg” done
  • $$ ​作用​:获取当前 Shell 或脚本的 ​PID(进程 ID)​。 ​典型用途​: echo “当前进程 ID: $$” ​输出​: 当前进程 ID: 12345 $? ​作用​:获取 ​上一条命令的退出状态码​(0 表示成功,非 0 表示失败)。 ​典型用途​: grep “keyword” file.txt if [ $? -ne 0 ]; then echo “未找到 keyword!” fi 或者: command || echo “命令执行失败!” $! ​作用​:获取 ​最后一个后台运行的进程 PID。 ​典型用途​: sleep 10 & echo “后台进程 PID: $!”
  • $0 ​作用​:获取 ​脚本名称或 Shell 名称。 ​典型用途​: echo “当前脚本: $0” ​输出​: 当前脚本: ./test.sh $_ ​作用​:获取 ​上一个命令的最后一个参数。 ​典型用途​: ls /usr/bin echo “上一个命令的最后一个参数: $_” ​输出​: /usr/bin上一个命令的最后一个参数: /usr/bin
  • $* 和 $@(在双引号中的区别) ​**"$*"**​:所有参数合并成一个字符串("$1 $2 $3")。 ​**"$@"**​:每个参数单独处理("$1" "$2" "$3"),适用于循环遍历。 ​典型用途​: for arg in “$@”; do echo “参数: $arg” done
  • $RANDOM ​作用​:生成 ​随机数(0-32767)​。 ​典型用途​: echo “随机数: $RANDOM” $SECONDS ​作用​:获取 ​脚本运行时间(秒)​。 ​典型用途​: sleep 3 echo “运行时间: $SECONDS 秒”
  • 变量 作用 典型用途 $0 脚本名称 获取当前脚本名 $1–$9 脚本参数 处理命令行参数 $# 参数个数 检查参数数量 $* 所有参数(合并) 整体处理参数 $@ 所有参数(独立) 循环遍历参数 $? 上一条命令的返回值 检查命令是否成功 $$ 当前进程 PID 记录进程 ID $! 最后一个后台进程 PID 管理后台任务 $_ 上一个命令的最后一个参数 快速引用参数 $RANDOM 随机数 生成随机值 $SECONDS 脚本运行时间 计时 这些特殊变量在 ​脚本参数处理、错误检查、进程管理、日志记录​ 等场景中非常有用,熟练掌握它们可以大幅提升 Bash 脚本的编写效率!  到此这篇关于Bash 脚本中的特殊变量的文章就介绍到这了,更多相关Bash特殊变量内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Bash脚本中特殊变量$0的使用 Bash技巧:把变量赋值为换行符(判断文件是否以换行符结尾) Linux下环境变量配置方法小结(.bash_profile和.bashrc的区别) 处理Shell脚本中带有空格的变量(bash脚本) Linux bash Shell中的变量类型详解 bash 循环中变量作用范围的问题分析
  • 目录
    • ​1. 脚本参数处理​
    • ​2. 进程和返回值​
    • ​3. 脚本自身信息​
    • ​4. 通配符和扩展​
    • ​5. 其他特殊变量​
    • ​总结​

    在 Bash 脚本和命令行中,​特殊变量​(Special Variables)主要用于获取脚本或命令的上下文信息,如参数、进程状态、返回值等。以下是常见的特殊变量及其典型应用场景:

    $0$1$2 … $9${10}

    • 作用​:获取脚本或函数的参数。

    典型用途​:

    # script.sh
    echo "脚本名称: $0"
    echo "第一个参数: $1"
    echo "第二个参数: $2"

    运行示例​:

    ./script.sh hello world

    输出​:

    脚本名称: ./script.sh
    第一个参数: hello
    第二个参数: world

    $#

    • 作用​:获取传递给脚本或函数的参数个数。

    典型用途​:

    if [ $# -eq 0 ]; then
        echo "错误:请提供参数!"
        exit 1
    fi

    $* 和 $@

    • 作用​:获取所有参数。
      • $*:所有参数合并成一个字符串("$1 $2 $3 ...")。
      • $@:每个参数单独处理("$1" "$2" "$3" ...),适用于循环遍历。

    典型用途​:

    for arg in "$@"; do
        echo "参数: $arg"
    done

    $$

    • 作用​:获取当前 Shell 或脚本的 ​PID(进程 ID)​

    典型用途​:

    echo "当前进程 ID: $$"

    输出​:

    当前进程 ID: 12345

    $?

    • 作用​:获取 ​上一条命令的退出状态码​(0 表示成功,非 0 表示失败)。

    典型用途​:

    grep "keyword" file.txt
    if [ $? -ne 0 ]; then
        echo "未找到 keyword!"
    fi

    或者:

    command || echo "命令执行失败!"

    $!

    • 作用​:获取 ​最后一个后台运行的进程 PID

    典型用途​:

    sleep 10 &
    echo "后台进程 PID: $!"

    $0

    • 作用​:获取 ​脚本名称或 Shell 名称

    典型用途​:

    echo "当前脚本: $0"

    输出​:

    当前脚本: ./test.sh

    $_

    • 作用​:获取 ​上一个命令的最后一个参数

    典型用途​:

    ls /usr/bin
    echo "上一个命令的最后一个参数: $_"

    输出​:

    /usr/bin
    上一个命令的最后一个参数: /usr/bin

    $* 和 $@(在双引号中的区别)

    • ​**"$*"**​:所有参数合并成一个字符串("$1 $2 $3")。
    • ​**"$@"**​:每个参数单独处理("$1" "$2" "$3"),适用于循环遍历。

    典型用途​:

    for arg in "$@"; do
        echo "参数: $arg"
    done

    $RANDOM

    • 作用​:生成 ​随机数(0-32767)​

    典型用途​:

    echo "随机数: $RANDOM"

    $SECONDS

    • 作用​:获取 ​脚本运行时间(秒)​

    典型用途​:

    sleep 3
    echo "运行时间: $SECONDS 秒"

    变量 作用 典型用途
    $0 脚本名称 获取当前脚本名
    $1$9 脚本参数 处理命令行参数
    $# 参数个数 检查参数数量
    $* 所有参数(合并) 整体处理参数
    $@ 所有参数(独立) 循环遍历参数
    $? 上一条命令的返回值 检查命令是否成功
    $$ 当前进程 PID 记录进程 ID
    $! 最后一个后台进程 PID 管理后台任务
    $_ 上一个命令的最后一个参数 快速引用参数
    $RANDOM 随机数 生成随机值
    $SECONDS 脚本运行时间 计时

    这些特殊变量在 ​脚本参数处理、错误检查、进程管理、日志记录​ 等场景中非常有用,熟练掌握它们可以大幅提升 Bash 脚本的编写效率! 

    到此这篇关于Bash 脚本中的特殊变量的文章就介绍到这了,更多相关Bash特殊变量内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • Bash脚本中特殊变量$0的使用
    • Bash技巧:把变量赋值为换行符(判断文件是否以换行符结尾)
    • Linux下环境变量配置方法小结(.bash_profile和.bashrc的区别)
    • 处理Shell脚本中带有空格的变量(bash脚本)
    • Linux bash Shell中的变量类型详解
    • bash 循环中变量作用范围的问题分析

    站内搜索