shell内部变量

$BASH            Bash的二进制程序文件的路径
$BASH_ENV        这个环境变量会指向一个Bash的启动文件,当一个脚本被调用的时候,这个启动文件将会被读取
$BASH_SUBSHELL        用来提示子shell的层次。
$BASH_VERSINFO[n]    一个含有6个元素的数组,它包含了所安装的Bash的版本信息。
0    主版本号
1    次版本号
2    补丁次数
3    编译版本
4    发行状态
5    结构体系
$BASH_VERSION        安装在系统上的Bash版本号
$DIRSTACK        在目录栈中最顶端的值(受到pushd和popd的影响)。这个内建变量与dirs命令相符,但是dirs命令会显示目录栈的整个内容。
$EDITOR            脚本所调用的默认编辑器,通常是vi或者是emacs
$EUID            “有效”用户ID。不管当前用户被假定成什么用户,这个数都用来表示当前用户的标识号
$FUNCNAME        当前函数的名字
$GLOBIGNORE        一个文件名的模式匹配列表,如果在通配中匹配到的文件包含有这个列表中的某个文件,那么这个文件将被从匹配到的结果中去掉。
$GROUPS            目前用户所属的组。这是一个当前用户的组id列表(数组),与记录在/etc/passwd文件中的内容一样。
$HOME            用户的home目录
$HOSTNAME        hostname放在一个初始化脚本中,在系统启动的时候分配一个系统名字。
$HOSTTYPE        主机类型,用来识别系统硬件。
$IFS            内部域分隔符。这个变量用来决定Bash在解释字符串时如何识别域,或者单词边界。
$IFS默认为空白(空格,制表符,和换行符),但这是可以修改的,比如,在分析都好分割的数据文件时,就可以设置为逗号。主义$*使用的是保存在$IFS中的第一个字符。
$IGNOREEOF        忽略EOF:告诉shell在log out之前要忽略多少文件结束符。
$LC_COLLATE        常在.bashrc或/etc/profile中设置,这个变量用来控制文件名扩展和模式匹配的展开顺序。
$LC_CTYPE        用来控制通配和模式匹配中的字符串解释
$LINENO            用来记录自身在脚本中所在的行号。
$MACHTYPE        机器类型,标识系统的硬件
$OLDPWD            之前的工作目录
$OSTYPE            操作系统类型
$PATH            可执行文件的搜索路径,一般/usr/bin/,/usr/X11R6/bin/,/usr/local/bin,等等。当给出一个命令时,shell会自动生成一张hash表,并且在这张hash表中按照path变量中所列出的路径来搜索这个可执行命令。路径会存储在环境变量中,$PATH变量本身就一个以冒号分割的目录列表。通常情况下,系统都是在/etc/profile和~/.bashrc中存储$PATH的定义。PATH=${PATH}:/opt/bin将会把目录/opt/bin附加到当前目录列表中。在脚本中,这是一种把目录临时添加到$PATH中的权宜之计。当这个脚本退出时,$PATH将会恢复之前的值(一个子进程,比如说一个脚本,是不能够修改父进程的环境变量的,在这里也就是不能够修改shell本身的环境变量)
$PIPESTATUS        这个数组变量将保存最后一个运行的前台管道的退出状态码。这个退出状态码和最后一个命令运行的退出状态码并不一定相同。$PIPESTATUS[0]保存管道中第一个命令的退出状态码。$PIPESTATUS[1]保存第二个命令的退出状态码,一次类推。
$PPID            进程的$PPID就是这个进程的父进程的进程ID(pid)。
$PROMPT_COMMAND        这个变量保存了在主提示符$PS1显示之前需要执行的命令
$PS1            这是主提示符,可以在命令行中见到它
$PS2            第二提示符,当你需要额外输入的时候,你就会看到它。默认显示">"。
$PS3            第三提示符,它在一个select循环中显示。
$PS4            第四提示符,当你使用-x选项来调用脚本时,这个提示符会出现在没行输出的开头。默认显示"+"
$PWD            工作目录(你当前所在的目录)这与内建命令pwd作用相同
$REPLY            当没有参数变量提供给read命令的时候,这个变量会作为默认变量提供给read命令。也可以用于select菜单,但是只提供所选择变量的编号,而不是变量本身的值。
$SECONDS        这个脚本已经运行的时间(以秒为单位)
$SHELLOPTS        shell中已经激活的选项的列表,这是一个只读变量
$SHLVL            Shell级别,就是Bash被嵌套的深度。如果是在命令行中,那么$SHLVL为1,如果在脚本中,则为2
$TMOUT            如果$TMOUT环境变量被设置为非零值time的话,那么经过time秒后,shell提示符将会超时。这将会导致登出(logout)
$UID            用户ID号。当前用户的用户标识号,记录在/etc/passwd文件中


位置参数
$0,$1,$2,等等    位置参数,从命令行传递到脚本,或者传递给函数,或者set给变量
$#            命令行参数的个数
$*            所有位置参数都被看作为一个单词
$@            与$*相同,但是每个参数都是一个独立的引用字符串。
$-            传递给脚本的标记(使用set命令)
$!            运行在后台的絊后一个作业的PID(进程ID)
$_            保存之前执行的命令的最后一个参数的值
$?            命令,函数,或者是脚本本身的退出状态码
$$            脚本自身的进程ID

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Shell 中,可以使用以下语法来声明变量: ``` 变量名=变量值 ``` 其中,变量名是用户自定义的变量名称,变量值是该变量所存储的数据。例如: ``` name="John" ``` 这样就声明了一个名为 name 的变量,其值为 "John"。注意,变量名和变量值之间不能有空格。另外,Shell 中的变量默认为字符串类型。 ### 回答2: 在shell中,变量可以用来存储各种类型的数据,包括数字、字符串和其他特殊类型。声明变量的方式有以下几种: 1. 直接赋值:使用等号将变量名和值连接起来。例如,name="John"将创建一个名为name的变量并赋值为John。 2. 使用命令输出:将命令的输出结果赋值给变量。使用$(...)或`...`来引用命令。例如,current_date=$(date)将创建一个名为current_date的变量并将当前日期赋值给它。 3. 读取用户输入:使用read命令从用户那里读取输入并赋值给变量。例如,read name将提示用户输入,并将输入赋值给名为name的变量。 在声明变量后,可以通过在变量名前加上美元符号$来访问其值。例如,echo $name将打印出变量name的值。如果不加美元符号,则只是打印出变量名本身。 需要注意的是,shell中的变量是区分大小写的。因此,变量$name和变量$NAME是两个不同的变量。 此外,变量的值可以被重新赋值,并且同一个变量可以存储不同类型的数据。例如,name="John"后面又可以使用name=30将变量name的值从字符串更改为数值。 最后,在使用变量时,可以使用花括号{}来明确变量名的边界。这在变量名后面紧跟其他字符时尤其重要。例如,echo ${name}ing将打印出变量name后面加上ing的字符串。 总之,在shell中,声明变量是一种非常有用的方式,可以将数据存储在内存中,并在脚本中使用。 ### 回答3: 在shell脚本中,我们可以使用“=”符号来声明变量变量名和等号之间不能有空格。例如,我们可以使用以下语法声明一个变量: ``` variable_name=value ``` 其中,variable_name是变量的名称,可以为任意字符串,但通常使用大写字母。value是变量的值,可以是数字、字符串或表达式。 例如,我们声明一个整数变量age,并给它赋值为25: ``` age=25 ``` 我们还可以在声明变量时进行字符串连接。例如: ``` name="John" greeting="Hello, "$name"!" echo $greeting ``` 在这个例子中,我们声明了一个叫name的变量,并给它赋值为"John"。然后,我们使用字符串连接将name变量与"Hello, "和"!"拼接起来,并将结果赋值给greeting变量。最后,我们使用echo命令打印greeting变量的值,结果将会是"Hello, John!"。 在使用变量之前,我们需要在变量名前面加上$符号来引用它们的值。例如,可以使用以下语法来引用变量: ``` echo $variable_name ``` 这将会打印出变量的值。 需要注意的是,变量在声明时不需要指定类型,并且在使用时不需要使用关键字进行声明。此外,shell中的变量默认是全局可见的,可以在脚本的任何位置使用。但是,如果在函数内部声明一个变量,则该变量将为局部变量,只能在函数内部使用。 总之,通过使用“=”符号,可以在shell脚本中声明变量并为其赋值。在使用变量时,我们可以引用它们的值,并进行各种操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值