内部变量

内部变量

内建变量
    这些变量将会影响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被嵌套的深度. 如果是在命令行中, 那么 SHLVL1, SHLVL为2.

$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).

$_
    这个变量保存之前执行的命令的最后一个参数的值.

$?
    命令, 函数, 或者是脚本本身的退出状态码

$ ID. $ 变量在脚本中经常用来构造”唯一的”临时文件名.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值