内部变量
内部变量
内建变量
这些变量将会影响bash脚本的行为.
$BASH
Bash的二进制程序文件的路径.
$BASH_ENV
这个环境变量会指向一个Bash的启动文件, 当一个脚本被调用的时候, 这个启动文件将会被读取.
$BASH_SUBSHELL
这个变量用来提示子shell的层次. 这是一个Bash的新特性.
$BASH_VERSINFO[n]
这是一个含有6个元素的数组, 它包含了所安装的Bash的版本信息.
#!/bin/bash
# Bash Version info
for n in 0 1 2 3 4 5
do
echo "BASH_VERSINFO[$n] =${BASH_VERSINFO[$n]}
done
$DIRSTACK
在目录栈中最顶端的值. (将会受到pushd和popd的影响)
$EDITOR
脚本所调用的默认编辑器, 通常情况下是vi或者是emacs.
$EUID
”有效”用户ID.
$FUNCNAME
当前函数的名字.
$GLOBIGNORE
一个文件名的模式匹配列表,如果在通配(globbing)中匹配到的文件包含有这个列表中的某个文件, 那么这个文件将被从匹配到的结果中去掉.
$GROUPS
目前用户所属的组.
$HOME
用户的home目录,一般是/home/username.
$HOSTNAME
hostname放在一个初始化脚本中, 在系统启动的时候分配一个系统名字. 然而,gethostname()函数可以用来设置这个Bash内部变量 $HOSTNAME .
$HOSTTYPE
主机类型.
就像$MACHTYPE,用来识别系统硬件.
$IFS
内部域分隔符.
$IGNOREEOF
忽略EOF: 告诉shell在log out之前要忽略多少文件结束符(control-D).
$LC_COLLATE
常在 .bashrc 或 /etc/profile 中设置, 这个变量用来控制文件名扩展和模式匹配的展开顺序.
$LC_CTYPE
这个内部变量用来控制通配(globbing)和模式匹配中的字符串解释.
$LINENO
这个变量用来记录自身在脚本中所在的行号. 这个变量只有在脚本使用这个变量的时候才有意义,并且这个变量一般用于调试目的.
$MACHTYPE
机器类型.
标识系统的硬件.
$OLDPWD
之前的工作目录.
$OSTYPE
操作系统类型.
$PATH
可执行文件的搜索路径, 一般为 /usr/bin/ ,/usr/X11R6/bin/ , /usr/local/bin ,等等.
$PIPESTATUS
这个数组变量将保存最后一个运行的前台管道的退出状态码. 相当有趣的是, 这个退出状态码和最后一个命令运行的退出状态码并不一定相同.
$PPID
进程的 $PPID 就是这个进程的父进程的进程ID( pid ).
$PROMPT_COMMAND
这个变量保存了在主提示符 $PS1 显示之前需要执行的命令.
$PS1, $PS2, $PS3, $PPS4
主提示符,第二提示符,第三提示符,第四提示符.
$PWD
工作目录(你当前所在的目录)
这与内建命令pwd作用相同.
$REPLY
当没有参数变量提供给read命令的时候, 这个变量会作为默认变量提供给read命令. 也可以用于select菜单, 但是只提供所选择变量的编号, 而不是变量本身的值.
$SECONDS
这个脚本已经运行的时间(以秒为单位).
$SHELLOPTS
shell中已经**的选项的列表, 这是一个只读变量.
$SHLVL
Shell级别, 就是Bash被嵌套的深度. 如果是在命令行中, 那么
$TMOUT
如果 $TMOUT 环境变量被设置为非零值time的话, 那么经过time秒后, shell提示符将会超时. 这将会导致登出(logout).
例:
#!/bin/bash
# timed-input.sh
TMOUT=3 # 提示输入时间为3s
echo "What's your name?"
echo "Quickly now,you only have $TMOUT seconds to answer!"
read name
if [ -z "$name" ]
then
name="(no answer)"
fi
echo "Your name is $name."
位置参数
$0 , $1 , $2 ,等等.
位置参数, 从命令行传递到脚本, 或者传递给函数, 或者set给变量
$#
命令行参数或者位置参数的个数.
$*
所有的位置参数都被看作为一个单词.
* ” $* “必须被引用起来.
$@
与$*相同, 但是每个参数都是一个独立的引用字符串, 这就意味着, 参数是被完整传递的, 并没有被解释或扩展. 这也意味着, 参数列表中每个参数都被看作为单独的单词.
其他的特殊参数
$-
传递给脚本的标记(使用set命令)
$!
运行在后台的最后一个作业的PID(进程ID).
$_
这个变量保存之前执行的命令的最后一个参数的值.
$?
命令, 函数, 或者是脚本本身的退出状态码
$
上一篇: java获取重定向后的网址(检测是否被篡改了主页)
下一篇: re模块