这些内建的变量,将影响bash脚本的行为.

$BASH

这个变量将指向Bash的二进制执行文件的位置.

$BASH_ENV

这个环境变量将指向一个Bash启动文件,这个启动文件将在调用一个脚本时被读取.

$BASH_SUBSHELL

这个变量将提醒subshell的层次,这是一个在version3才被添加到Bash中的新特性.

$BASH_VERSINFO[n]
记录Bash安装信息的一个6元素的数组.与下边的$BASH_VERSION很像,但这个更加详细.
# BASH_VERSINFO[0] = 3                       # 主版本号
# BASH_VERSINFO[1] =00                      # 次版本号
# BASH_VERSINFO[2] = 14                     # Patch 次数.
# BASH_VERSINFO[3] = 1                      # Build version.
# BASH_VERSINFO[4] = release                 # Release status.
# BASH_VERSINFO[5] = i386-redhat-linux-gnu    # Architecture

$BASH_VERSION
安装在系统上的Bash的版本号.

使用这个变量对于判断系统上到底运行的是那个shll来说是一种非常好的办法.$SHELL,有时将不能给出正确的答案.

$DIRSTACK
在目录栈中最上边的值(将受到pushd和popd的影响).这个内建的变量与dirs命令是保持一致的,但是dirs命令将显示目录栈的整个内容.

$EDITOR
脚本调用的默认编辑器,一般是vi或者是emacs.

$EUID
"effective"用户ID号,当前用户被假定的任何id号.可能在su命令中使用.
注意:$EUID并不一定与$UID相同.

$FUNCNAME          当前函数的名字.

$GLOBIGNORE
一个文件名的模式匹配列表,如果在file globbing中匹配到的文件包含这个列表中的
某个文件,那么这个文件将被从匹配到的文件中去掉.

$GROUPS
当前用户属于的组.
这是一个当前用户的组id列表(数组),就像在/etc/passwd中记录的一样.

$HOME
用户的home目录,一般都是/home/username

$HOSTNAME
hostname命令将在一个init脚本中,在启动的时候分配一个系统名字.,gethostname()函数将用来设置这个$HOSTNAME内部变量

$HOSTTYPE
主机类型,就像$MACHTYPE,识别系统的硬件.

$IFS
内部域分隔符,这个变量用来决定Bash在解释字符串时如何识别域,或者单词边界.
$IFS默认为空白(空格,tab,和新行),但可以修改,比如在分析逗号分隔的数据文件时.

$IGNOREEOF
忽略EOF: 告诉shell在log out之前要忽略多少文件结束符(control-D).

$LC_COLLATE
常在.bashrc或/etc/profile中设置,这个变量用来在文件名扩展和模式匹配校对顺序.
如果$LC_COLLATE被错误的设置,那么将会在filename globbing中引起错误的结果.
注意:在2.05以后的Bash版本中,filename globbing将不在对[]中的字符区分大小写.

$LC_CTYPE
这个内部变量用来控制globbing和模式匹配的字符串解释.

$LINENO
这个变量记录它所在的shell脚本中它所在行的行号.这个变量一般用于调试目的.

$MACHTYPE
系统类型,提示系统硬件

$OLDPWD
老的工作目录("OLD-print-working-directory",你所在的之前的目录)

$OSTYPE
操作系统类型.

$PATH
指向Bash外部命令所在的位置,一般为/usr/bin,/usr/X11R6/bin,/usr/local/bin等.
当给出一个命令时,Bash将自动对$PATH中的目录做一张hash表.$PATH中以":"分隔的
目录列表将被存储在环境变量中.一般的,系统存储的$PATH定义在/ect/processed或
PATH=${PATH}:/opt/bin将把/opt/bin目录附加到$PATH变量中.在脚本中,这是一个添加目录到$PATH中的便捷方法.这样在这个脚本退出的时候,$PATH将会恢复(因为这个shell是个子进程,像这样的一个脚本是不会将它的父进程的环境变量修改的)

$PIPESTATUS
数组变量将保存最后一个运行的前台管道的退出码.有趣的是,这个退出码和最后一个命令运行的退出码并不一定相同.

$PPID
一个进程的$PPID就是它的父进程的进程id(pid).[1],使用pidof命令对比一下.

$PROMPT_COMMAND
这个变量保存一个在主提示符($PS1)显示之前需要执行的命令.

$PS1
主提示符,具体见命令行上的显示.

$PS2
第2提示符,当你需要额外的输入的时候将会显示,默认为">".

$PS3
第3提示符,在一个select循环中显示

$PS4
第4提示符,当使用-x选项调用脚本时,这个提示符将出现在每行的输出前边,默认为"+".

$PWD
工作目录(你当前所在的目录).与pwd内建命令作用相同.

$REPLY
read命令如果没有给变量,那么输入将保存在$REPLY中.在select菜单中也可用,但是只提供选择的变量的项数,而不是变量本身的值. $REPLY是'read'命令结果保存的默认变量.

$SECONDS
这个脚本已经运行的时间(单位为秒).

$SHELLOPTS
这个变量里保存shell允许的选项,这个变量是只读的.

$SHLVL
Shell层次,就是shell层叠的层次,如果是命令行那$SHLVL就是1,如果命令行执行的脚本中,$SHLVL就是2,以此类推.

$TMOUT
如果$TMOUT环境变量被设置为一个非零的时间值,那么在过了这个指定的时间之后,shell提示符将会超时,这会引起一个logout.,在2.05b版本的Bash中,已经支持在一个带有read命令的脚本中使用$TMOUT变量.

Bash shell中的位置参数$#,$*,$@,$0,$1,$2...及特殊参数$?,$-等的含义
在Bash shell中经常会见到一些比较特殊的符号

位置参数:
$1, $2, $3等等...
位置参数,从命令行传递给脚本,或者是传递给函数.或者赋值给一个变量.此数目可以任意多,但只有前9个可以被访问,使用shift命令可以改变这个限制。
$0表示当前执行的进程名,script 本身的名字,或者在正则表达式中表示整行输出

$#
命令行或者是位置参数的个数.(见Example 33-2)
$*
所有的位置参数,被作为一个单词.注意:"$*"必须被""引用.
$@
与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递,
并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的单词.
注意:"$@"必须被""引用.

其他的特殊参数
$-
传递给脚本的falg(使用set 命令).参考Example 11-15.
显示shell使用的当前选项,与set命令功能相同
注意:这起初是ksh 的特征,后来被引进到Bash 中,但不幸的是,在Bash 中它看上去也不
能可靠的工作.使用它的一个可能的方法就是让这个脚本进行自我测试(查看是否是交
互的).
$!
在后台运行的最后的工作的PID(进程ID).
$_
保存之前执行的命令的最后一个参数.
$?
命令,函数或者脚本本身的退出状态(见Example 23-7)
用于检查上一个命令,函数或者脚本执行是否正确。(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错。)
$$
脚本自身的进程ID.这个变量经常用来构造一个"unique"的临时文件名.
(参考Example A-13,Example 29-6,Example 12-28 和Example 11-25).
这通常比调用mktemp 来得简单.
注意事项:
[1] 当前运行的脚本的PID 为$$.
[2] "argument"和"parameter"这两个单词经常不加区分的使用.在这整本书中,这两个
单词的意思完全相同.(在翻译的时候就未加区分,统统翻译成参数)

SHELL 内置变量相关推荐

  1. Shell——quan——内置变量

    bash shell内置变量的命令:echo eval exec export read shift echo 输出信息 -n 不换行输出内容 -e 解析转义字符 转义字符:\n 换行 (加引号) \ ...

  2. shell--特殊位置参数变量及常用内置变量

    1.shell中的特殊位置参数变量 $0:获取当前执行的shell脚本的文件名,如果执行脚本包含了路径,那么就包括脚本路径 $n:获取当前执行的shell脚本的第n个参数,n=1..9,当n为0时表示 ...

  3. shell学习之常用bash内置变量

    常用的Bash内置变量 1 BASH_COMMAND当前执行的命令 2 LINENO显示当前所在行号 /bin/bash echo "this is test about ARG LINEN ...

  4. 【Shell】awk命令--输出某列,列求和,列求平均值,列最大值,列去重复,取倒列,过滤行,匹配,不匹配,内置变量|定义分隔符|多个分隔符...

    目录 awk基本语法 awk输出某几列 awk遍历文件行处理 awk中运行shell命令 方法1:awk 内置函数system 方法2 通过awk  print 交给bash awk中运行shell命 ...

  5. 【Shell】awk命令--输出某列,列求和,列求平均值,列最大值,列去重复,取倒列,过滤行,匹配,不匹配,内置变量|定义分隔符|多个分隔符

    目录 awk基本语法 awk输出某几列 awk遍历文件行处理 awk中运行shell命令 方法1:awk 内置函数system 方法2 通过awk  print 交给bash awk中运行shell命 ...

  6. awk取文本列_awk命令结构/内置变量/获取文本某行或某列

    awk脚本基本结构 awk 'BEGIN{ print "start" }pattern{ commands }END{ print "end" }' file ...

  7. linux make makefile 内置变量 默认变量

    在看uboot的Makefile的时候,发现CURDIR这个变量没有定义就直接用了,于是百度了一下,原来CURDIR是Makefile的一个内置变量,在这里顺便把其他的变量也记录一下. 打印变量值使用 ...

  8. 命令 —— awk内置变量(NF,NR,FS,FILENAME)

    关于awk命令的几个内置变量(NF,NR,FS,FILENAME) 1.NF:支持记录域个数,在记录被读之后再设置例1 [root@redhat wilsontest]# pwd /tmp/wilso ...

  9. jenkins内置变量的使用

    参考链接:  https://www.cnblogs.com/puresoul/p/4828913.html 一.查看Jenkins有哪些环境变量 1.新建任意一个job 2.增加构建步骤:Execu ...

  10. jmeter中没有sampler_jmeter(七)-BeanShell常用内置变量和场景

    Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.log ...

最新文章

  1. 联邦学习:AI大规模落地又一革命性突破
  2. 算法:数值的整数次方
  3. 570D Codeforces Round #316 (Div. 2) D(dfs序,时间戳,二分
  4. java e.getmessage() null_Java e.getMessage 错误信息为null
  5. 从Windows计算机上完全删除iTunes和其他Apple软件
  6. C++之STL理论基础
  7. 【考研】2020年,计算机,考研,专业课(408)大纲,排版校对版
  8. nginx发布PHP代码,nginx服务器配置返回php代码
  9. HCIE-Security Day10:6个实验理解VRRP与可靠性
  10. 用Netty实现WebSocket网络聊天室
  11. 消防水池液位报警装置设置参数
  12. 2019年安徽省c语言二级答案,2019年春江苏省计算机二级C语言真题
  13. python居然能语音控制电脑壁纸切换,只需60行代码
  14. CF1720A Burenka Plays with Fractions 题解
  15. Audacity分析清音浊音爆破音的时域及频域特性
  16. vue集合离线百度地图
  17. JAVA期末大作业之学生信息管理简洁版系统
  18. 访问国内网站提示无法访问
  19. k8s 查看pod流量_K8s中对pod进行流量限制
  20. odoo用户使用——采购

热门文章

  1. 免费建立个人网站怎么做?教你简单的方法
  2. Android studio 之 Menu(菜单)
  3. FileReader 对象实现图片预览
  4. 计算机各类会议及投稿文章总结(快速入门)
  5. 空间命名的定义及使用:using namespace std 的用法详解
  6. 水波纹特效怎么制作?这波水波纹特效拉动满满复古感
  7. Swift 网络请求Moya框架简单二次封装
  8. 《人生哲理》一.我们必须活在当下!
  9. nltk文件下载以及word_tokenize运行问题解决
  10. 什么是糊涂窗口综合症