shell 中有很多
内建变量,它们会影响到 shell 脚本的行为,所以也有必要知道。
* BASH:表示 Bash 的二进制程序文件的路径。
* BASH_ENV:它会指向一个 Bash 的启动文件,该文件会在一个脚本被调用时读取。
* BASH_SUBSHELL:用来提示子 shell 的层次。
* BASH_VERSINFO[n]:它包含了安装的 Bash 的版本信息,是一个含有 6 个元素的数组,分别代表:主版本号、次版本号、补丁次数、编译版本、发行状态和结构体系。
* BASH_VERSION:Bash 的版本号,它与 $BASH_VERSINFO 很像,只是没那么详细。检查该变量对于判断系统上到底运行哪个 shell 来说是一种很好的办法,因为变量 $SHELL 有时候不能给出正确的答案。
* DIRSTACK:目录栈中最顶端的值。它与 dirs 命令类似,不过 dirs 命令会显示目录栈的整个内容。
* EDITOR:脚本默认的编辑器。
* EUID:表示“有效”的用户 ID。
* FUNCNAME:当前函数的名字。只在函数中有效,超出函数作用域将变为 null。
* GLOBIGNORE:在进行文件通配查找时要从结果集中去掉的文件模式组成的列表。
* GROUPS:当前用户所属的组 ID 列表。与 /etc/passwd 中的一样。
* HOME:用户的 home 目录,一般是 /home/<username>。
* HOSTNAME:系统主机名。
* HOSTTYPE:主机类型。如同 $MACHTYPE,用来识别系统硬件。
* IFS:内部域分隔符,用来决定 Bash 在解释字符串时如何识别域,或者单词边界。默认为空白符(空格、制表符和换行符)。示例如下:
$ v="aa:bb:cc"
$ IFS=":"
$ for a in $v; do echo "[$a]"; done
[aa]
[bb]
[cc]
$ IFS=
$ for a in $v; do echo "[$a]"; done
[aa:bb:cc]
$
$ bash -c 'set w x y-z; IFS=":"; echo "$* -> [$1] [$2] [$3]"'
w:x:y-z -> [w] [x] [y-z]
* IGNOREEOF:忽略 EOF。告诉 shell 在 log out 之前要忽略多少次文件结束符(Ctrl+D)。
* LC_COLLATE:用来控制文件名扩展和模式匹配的展开顺序,常在 ~/.bashrc 或 /etc/profile 中设置。文件名匹配在 2.05 版本后的 Bash 中不再区分中括号结构中的字符范围里字符的大小写,比如“ls [A-Z]*”既能匹配 ABc 也能匹配 abc。要使中括号里的字符区分大小写,可以设置该变量为 C。在 /etc/profile 和 ~/.bashrc 中设置“export LC_COLLATE=C”将永久生效。
* LC_CTYPE:控制通配和模式匹配中的字符串解释。
* LINENO:记录自身在脚本中所在的行号。一般用于调试目的。
* MACHTYPE:机器类型。标识系统的硬件。
* OLDPWD:之前的工作目录。
* OSTYPE:操作系统类型。
* PATH:可执行文件的搜索路径。
* PIPESTATUS:是一个数组变量,依次保存了运行在前台管道中的相应命令的退出状态码,即 ${PIPESTATUS[0]} 保存管道中第一个命令的退出状态码,${PIPESTATUS[1]} 保存第二个命令的退出状态码,依此类推。要注意的是,最后一个运行的管道的退出状态码和最后一个命令运行的退出状态码并不一定相同。
* PPID:父进程的进程 ID。
* PROMPT_COMMAND:保存了在主提示符 $PS1 显示之前需要执行的命令。
* PS1:主提示符。可以在命令行中见到。
* PS2:第二提示符。当需要额外输入的时候就会看到,默认显示“>”。
* PS3:第三提示符。在一个 select 循环中显示。
* PS4:第四提示符。当使用“-x”选项来调用脚本时,该提示符就会出现在每行输出的开头。默认显示“+”。
* PWD:当前的工作目录。作用同内建命令“pwd”。
* RANDOM:这实际上是 Bash 的内部函数,它会产生 0 ~ 32767 之间的伪随机数。
* REPLY:当 read 命令没有指定接收输入的变量时,该变量就会作为默认变量提供给 read。也可以用于 select 菜单,但是只提供所选择变量的编号,而不是变量本身的值。
* SECONDS:脚本已经运行的秒数。
* SHELLOPTS:shell 中已经激活的选项的列表。这是一个只读变量。
* SHLVL:shell 级别,就是 Bash 被嵌套的深度。如果是在命令行中,则其值为 1。在脚本中则为 2。
* TMOUT:表示在经过 TMOUT 秒后还没有输入,shell 提示符将会超时。类似于 read 命令的“-t”参数。
* UID:当前的用户 ID,是一个只读变量,和内建的 id 命令很像。
* $0, $1, $2 等:位置参数。从命令行传递到脚本,或者传递给函数,或者 set 给变量(见上面的 $IFS 变量示例)。
* $#:命令行参数或者位置参数的个数。
* "$*":把所有的位置参数都看作为一个单词。使用时一般需要被引用起来,否则会把参数看成单独的单词。
* "$@":同“$*”,不过把参数列表中的每个参数都看作单独的单词,可迭代读取其中的每个参数。使用时一般也需要被引用起来。另外,shift 命令执行后,“$@”将会保存剩余的位置参数,但是没有之前的“$1”,因为被 shift 丢弃了。“$@”和“$*”中的参数只有在被双引号引用起来的时候才会不同。“$IFS”变量的值也会影响这两个变量的行为,尤其是设置 IFS 为空的时候(IFS=""),不过这种行为可能依赖于所使用的 shell。
* $-:使用 set 命令设置的脚本标记。
* $!:运行在后台的最后一个作业的进程 ID。
* $_:保存之前执行的命令的最后一个参数或命令(没有参数的话)的值。
* $?:命令、函数,或脚本本身的退出状态码。
* $$:脚本自身的进程 ID。经常用来构造“唯一的”临时文件名,因为比直接调用 mktemp 命令简单些。
分享到:
相关推荐
Genesis2000是一款广泛应用于电子制造行业的PCB设计软件,提供了...在使用这些内部变量时,需要仔细理解每个参数的意义和作用,根据不同的需求和情况选择合适的参数组合,这样才能充分发挥Genesis2000脚本的强大功能。
精品企业内部变量含义表 .pdf
Vscode内部变量汇总 Vscode内部变量是Vscode中的一种功能,可以在配置文件中使用,例如launch.json和tasks.json文件中。这些变量可以帮助开发者快速配置和自定义Vscode的行为。 一、预定义变量 Vscode提供了一些...
### 外部变量与static内部变量的区别 #### 外部变量 - **定义**:未使用`static`关键字的全局变量。 - **特点**: - 生存期贯穿整个程序运行过程。 - 作用域覆盖整个源程序,即使在多个源文件中也可以访问。 - **...
1、首先是如何给你定义的变量拿到数据: 这里我自己用的是vuex: 首先在你项目的src文件夹下创建这么一个目录: 之后就要在index.js中将homedatas.js(拿数据的js)共享出去,使页面能拿到数据, 以下是index.js的...
本压缩包包含的源码提供了关于如何实现DLL操作EXE程序内部变量或数据结构的实例。 DLL(Dynamic Link Library)是Windows操作系统中的一个重要组成部分,它允许不同程序共享代码和资源,减少了内存占用和系统开销。...
### Java 利用反射获取内部类静态成员变量的值操作 #### 一、引言 在Java编程中,反射是一个非常强大的工具,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够创建和操作对象。本文将详细介绍如何使用...
内部变量用于存储程序中临时的数据,而外部变量用于连接 PLC 发送的数据。 变量管理 在 WinCC 中,变量管理是指对变量的创建、编辑和管理。用户可以在变量管理中新建组,并在其中建立变量。变量的数据类型可以选择...
可以编写脚本或者应用程序(使用C语言或其他编程语言),在WinCC运行时将内部变量写入到文件系统中,当重启发生后,再将这些值从文件中读取出来,并重新加载到WinCC的内部变量中。 3. 利用WinCC的数据库连接功能。...
【标题】"精品企业内部变量含义表.pdf打包整理.zip" 提供的是关于企业内部使用的变量及其含义的详细文档。这通常涉及到企业的数据管理和业务流程,是理解和操作企业系统的关键参考资料。内部变量是企业在运营过程中...
Somachine 通讯变量地址转换对应表,需要可以下载看看
与公有变量相反,私有变量只能在声明它们的类内部访问。这是封装原则的体现,有助于保护数据不被外部代码随意修改。例如: ```csharp public class MyClass { private int PrivateVar = 10; // 私有变量 public ...
批量归一化通过减少内部协变量转移加速深度网络训练 .pdf
易语言DLL操作EXE程序内部变量或数据结构.rar 易语言DLL操作EXE程序内部变量或数据结构.rar 易语言DLL操作EXE程序内部变量或数据结构.rar 易语言DLL操作EXE程序内部变量或数据结构.rar 易语言DLL操作EXE程序内部...
在Python编程语言中,静态变量和内部变量是两个重要的概念,它们在类和函数的上下文中扮演着不同的角色。在Python 3.7版本中,虽然没有像其他面向对象语言如Java那样明确的静态变量定义语法,但可以通过类变量来模拟...
标题中的“DLL操作EXE程序内部变量或数据结构源码”指的是如何利用动态链接库(DLL)来访问并操作执行文件(EXE)中的内部变量和数据结构。这是一个常见的技术,尤其是在软件开发中,用于扩展功能或者实现跨进程通信...
易语言源码DLL操作EXE程序内部变量或数据结构.rar 易语言源码DLL操作EXE程序内部变量或数据结构.rar 易语言源码DLL操作EXE程序内部变量或数据结构.rar 易语言源码DLL操作EXE程序内部变量或数据结构.rar 易语言...
不过,直接操作EXE的内部变量需要谨慎,因为这可能导致数据同步问题和安全性风险。 1. **导出函数与接口设计**:DLL中需要提供一些导出函数,这些函数是EXE与DLL交互的接口。通过这些函数,DLL可以接收EXE传递的...
- **局部变量**: 在函数内部定义,作用范围仅限于该函数内部。 - **静态局部变量**: 同样在函数内部定义,但通过添加`static`关键字,使得它在整个程序运行期间都存在。 #### 三、存储方式与生命周期 - **全局变量...