Shell内置变量详解
shell中内置变量
在Shell脚本中,内置变量(也称为环境变量或特殊变量)是由Shell自动设置和维护的变量,用于存储有关Shell环境、脚本执行状态等信息。以下是一些常见的Shell内置变量:
1. 位置参数
-
$0
:当前脚本的文件名。 -
$1
,$2
, ...,$9
:传递给脚本或函数的位置参数(第1到第9个参数)。 -
$#
:传递给脚本或函数的参数个数。 -
$*
:所有位置参数作为一个字符串。 -
$@
:所有位置参数作为单独的字符串(通常用于循环中)。 -
$?
:上一个命令的退出状态(0表示成功,非0表示失败)。 -
$$
:当前Shell进程的进程ID(PID)。 -
$!
:最后一个后台运行的进程的PID。
2. 特殊变量
-
$_
:上一个命令的最后一个参数。 -
$-
:当前Shell的选项标志。 -
$IFS
:内部字段分隔符(用于分割字符串的字符,默认为空格、制表符和换行符)。
3. 环境变量
-
$HOME
:当前用户的主目录。 -
$PATH
:可执行文件的搜索路径。 -
$PWD
:当前工作目录。 -
$OLDPWD
:上一个工作目录。 -
$USER
:当前用户名。 -
$SHELL
:当前Shell的路径。 -
$LANG
:当前的语言环境。 -
$TERM
:当前终端的类型。 -
$PS1
:主提示符字符串。 -
$PS2
:次提示符字符串(用于多行命令)。
4. 脚本相关
-
$LINENO
:当前脚本中的行号。 -
$FUNCNAME
:当前函数的名称。 -
$BASH_VERSION
:Bash的版本信息(仅适用于Bash)。 -
$RANDOM
:生成一个随机数。
5. 其他
-
$SECONDS
:脚本已经运行的秒数。 -
$REPLY
:read
命令的默认变量(如果没有指定变量名)。
示例
bash
复制
#!/bin/bash echo "脚本名称: $0" echo "第一个参数: $1" echo "参数个数: $#" echo "所有参数: $*" echo "上一个命令的退出状态: $?" echo "当前进程ID: $$" echo "当前用户: $USER" echo "当前目录: $PWD"
注意事项
-
这些变量在不同的Shell(如Bash、Zsh、Ksh等)中可能会有一些差异。
-
某些变量(如
$RANDOM
、$SECONDS
)是Bash特有的,可能在其他Shell中不可用。
例如脚本:
#!/bin/bash
for i in $(seq 1 $#);do
echo "第$i个参数 ${!i}"
done