回顾
- 区分了单引号和双引号的区别;
- 了解了更多的转义字符;
- 退出时的状态。
访问变量
变量使用得当,可以使脚本变得更加强大和有弹性。
内部变量
-
$BASH:Bash二进制程序文件的路径; -
$BASH_ENV:该环境变量保存一个Bash启动文件路径,当启动一个脚本程序时会去读该环境变量指定的文件; -
$BASH_SUBSHELL:一个指示子shell(subshell)等级的变量; -
$BASH_VERSINFO[n]:这个数组含有6个元素,指示了安装的Bash版本的信息。它和$BASH_VERSION相似,但它们还是有一些小小的不同;#!/bin/bash for n in 0 1 2 3 4 5 do echo "BASH_VERSINFO[$n] = ${BASH_VERSINFO[$n]}" done exit 0运行结果如下:
$ ./5-2-BashVersifo.sh
BASH_VERSINFO[0] = 3 # 主版本号.
BASH_VERSINFO[1] = 2 # 次版本号.
BASH_VERSINFO[2] = 57 # 补丁级.
BASH_VERSINFO[3] = 1 # 编译版本.
BASH_VERSINFO[4] = release # 发行状态.
BASH_VERSINFO[5] = x86_64-apple-darwin19 # 结构体系(和变量$MACHTYPE相同). -
$BASH_VERSION:安装在系统里的Bash版本。其中,检查$BASH_VERSION是检测哪个shell在运行的好办法。$SHELL变量不一定能给出正确的答案; -
$DIRSTACK:在目录堆栈里面最顶端的值; -
$EUID:有效用户ID; -
$FUNCNAME:当前函数的名字; -
$GLOBIGNORE:由通配符(globbing)扩展的一列文件名模式; -
$GROUPS:目前用户所属的组; -
$HOME:用户的家目录,通常是/home/username; -
$HOSTNAME:在系统启动时由一个初始化脚本中用hostname命令给系统指派一个名字; -
$HOSTTYPE:机器类型; -
$IFS:内部字段分隔符; -
$IGNOREEOF:忽略EOF:在退出控制台前有多少文件结尾标识(end-of-files,control-D)会被shell忽略; -
$LC_COLLATE:它通常在.bashrc或/etc/profile文件里被设置,它控制文件名扩展和模式匹配的展开顺序。如果设置不当,LC_COLLATE会在文件名通配符(filename globbing)里引起不可预料的结果; -
$LC_CTYPE:这个内部变量控制通配符(globbing)和模式匹配中的字符解释; -
LINENO:这个变量表示在本shell脚本中该变量出现时所在的行数。它只在脚本中它出现时有意义,它一般可用于调试; -
$MACHTYPE:机器类型; -
$OLDPWD:上一次工作的目录(“OLD-print-working-directory”,你上一次进入工作的目录); -
$OSTYPE:操作系统类型; -
$PATH:可执行程序文件的搜索路径。一般有/usr/bin/, /usr/X11R6/bin/, /usr/local/bin,等等; -
$PIPESTATUS:此数组变量保存了最后执行的前台管道的退出状态。相当有趣的是,它不一定和最后执行的命令的退出状态一样; -
$PPID:一个进程的$PPID变量保存它的父进程的进程ID(pid); -
$PROMPT_COMMAND:这个变量在主提示符前($PS1显示之前)执行它的值里保存的命令; -
$PS1:这是主提示符(第一提示符),它能在命令行上看见; -
$PS2:副提示符(第二提示符),它在期望有附加的输入时能看见。它显示像>的提示; -
$PS3:第三提示符。它在一个select循环里显示; -
$PS4:第四提示符,它在用-x选项调用一个脚本时的输出的每一行开头显示。它通常显示像+的提示; -
$PWD:工作目录(即你现在所处的目录); -
$REPLY:没有变量提供给read命令时的默认变量。这也适用于select命令的目录,但只是提供被选择的变量项目编号而不是变量本身的值; -
$SECONDS:脚本已运行的秒数; -
$SHELLOPTS:已经激活的shell选项列表,它是一个只读变量; -
$SHLVL:SHELL的嵌套级别。指示了Bash被嵌套了多深。在命令行里,$SHLVL是1,因此在一个脚本里,它是2; -
$TMOUT:如果$TMOUT环境变量被设为非零值时间值time,那么经过time这么长的时间后,shell提示符会超时.这将使此shell退出登录; -
$UID:用户ID号; -
$#:命令行参数或者是位置参数的数量; -
$*:所有的位置参数都被当成单个单元; -
$@:和$*相同,但每个参数都是一个引起的字符串; -
$-:(使用set命令)传给脚本的标记; -
$!:在后台运行的最后一个作业的PID(进程ID); -
$_:保存前一个命令最后一个参数的变量值; -
$?:一个命令,函数或脚本自身的退出状态码; -
$$:脚本本身的进程PID。
参考资料
来源:CSDN
作者:holyLQD
链接:https://blog.csdn.net/u011228324/article/details/103944304