在 shell 编程中,有一些特殊变量(有时称为预定义变量或环境变量),这些变量在脚本中可以用来获取有关 shell 环境或传递给脚本的参数等信息。以下是一些常见的 shell 特殊变量:
1. 位置参数变量
这些变量用于访问脚本执行时传递的参数。
$0
: 当前脚本的名称。$1
至$9
: 脚本传递的第 1 至第 9 个参数。${10}
: 第 10 个及以上的参数,使用大括号括起来。$#
: 传递给脚本的参数的个数。$*
: 所有传递给脚本的参数,被视为一个单独的字符串。$@
: 所有传递给脚本的参数,每个参数被视为独立的字符串(与$*
类似,但处理多字参数时不同)。"$@"
: 每个参数都会被双引号括起来,单独处理。#!/bin/bash # 输出当前脚本名称 echo $0 # 参数 1 到 9 ,{10}及以上 echo "First argument:$1" echo "Second argument:$2" echo "Tenth argument:${10}" # $# 传递给脚本的参数个数 echo "Number of arguments: $#" # $* 所有参数作为一个字符串 echo "All arguments (as a single string): $*" # $@ 所有参数分别处理 for arg in "$@" do echo "Argument: $arg" done
2. 特殊用途变量
这些变量提供了有关脚本和命令执行状态的信息。
$$
: 当前 shell 进程的进程 ID(PID)。$!
: 最近执行的后台命令的进程 ID(PID)。$?
: 最近执行的命令的退出状态(返回值)。$-
: 当前 shell 的选项标志,表示使用了哪些命令行选项。$_
: 最近执行的命令的最后一个参数,或者是上一个命令的最后一行输出。
3. 环境变量
这些变量影响 shell 的行为,并且可以在子进程中被继承。
$HOME
: 当前用户的主目录路径。$PWD
: 当前工作目录路径。$OLDPWD
: 之前的工作目录路径。$PATH
: 系统查找可执行文件的路径列表。$SHELL
: 当前使用的 shell 程序路径。$USER
: 当前登录的用户名。$UID
: 当前用户的用户 ID。$IFS
: 内部字段分隔符,用于定义 shell 如何识别单词边界(默认为空格、制表符和换行符)。$LANG
: 当前语言设置。
这些特殊变量在 shell 脚本编写中非常有用,可以帮助脚本获取必要的上下文信息,并做出动态响应。