注:以下内容应用与【*.sh】文件
系统给定的变量
在Shell编程中,系统给定的变量(也称为预定义变量)是由系统预设的,用于提供有关脚本运行的环境和状态的信息。这些变量通常不需要用户定义或修改,可以直接在脚本中使用。
变量名 | 作用 |
---|---|
$0 | 当前脚本的名字 |
$n | 传递给脚本或者函数的参数,n表示第几个参数 |
$# | 传递给脚本或函数的参数个数 |
$* | 传递给脚本或函数的所有参数 |
$@ | 传递给脚本或者函数的所有参数 |
$$ | 当前shell脚本进程的PID |
$? | 函数返回值,或者上个命令的退出状态 |
$BASH | BASH的二进制文件问的路径 |
$BASH_ENV | BASH的启动文件 |
$BASH_VERSINFO[n] | BASH版本信息,有六个元素 |
$BASH_VERSION | BASH版本号 |
$EDITOR | 脚本所调用的默认编辑器 |
$EUID | 当前有效的用户ID |
$FUNCNAME | 当前函数名 |
$GROUPS | 当前用户所属组 |
$HOME | 当前用户家目录 |
$HOSTTYPE | 主机类型 |
$LINENO | 当前行号 |
$OSTYPE | 操作系统类型 |
$PATH | PATH路径 |
$PPID | 当前shell进程的父进程ID |
$PWD | 当前工作目录 |
$SECONDS | 当前脚本运行秒数 |
$TMOUT | 不为0时,超过指定的秒将退出shell |
$UID | 当前用户ID |
使用方法:
编辑脚本文件。
vi test.sh
测试内容:
代码语言:javascript复制echo "文件名:$0"
echo "第一个参数:$1"
echo "第三个参数:$3"
echo "共计传递了:$#个参数"
echo "传递的所有参数:$*"
echo "传递给函数的参数:$@"
echo "当前脚本的进程ID:$$"
echo "二进制文件路径:$BASH"
echo "BASH的启动文件:$BASH_ENV"
echo "BASH的版本号6个元素:$BASH_VERSINFO"
echo "BASH的版本号:$BASH_VERSION"
echo "脚本使用的默认编辑器:$EDITOR"
echo "当前的用户ID(有效):$EUID"
echo "当前的用户ID:$UID"
echo "用户HOME目录:$HOME"
echo "主机类型:$HOSTTYPE"
echo "操作系统类型:$OSTYPE"
echo "PATH路径:$PATH"
echo "当前工作目录:$PWD"
echo "当前脚本运行秒数:$SECONDS"
测试结果:
这里注意以下BASH的版本号6个元素,显示的是5,是0,1,2,3,4,5共计六个元素。
很多的时候我们需要进行一定的系统判断以及权限判断,故而需要这些默认的内容,用起来还是很方便的。