shell实战:内置(built-in)变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell实战:内置(built-in)变量相关的知识,希望对你有一定的参考价值。

shell领域内,变量的作用不言而喻。

内置变量,是不需要在程序中声明,就自动存在的,随时可以访问。

  Shell 的环境变量分为 set, env 两种,其中 set 变量可以通过 export 工具导入到 env 变量中。其中,set 是显示设置shell变量,仅在本 shell 中有效;env 是显示设置用户环境变量 ,仅在当前会话中有效。换句话说,set 变量里包含了 env 变量,但 set 变量不一定都是 env 变量。这两种变量不同之处在于变量的作用域不同。显然,env 变量的作用域要大些,它可以在 subshell 中使用。

SHELL

[[email protected] shells]# echo $SHELL

/bin/bash

BASH显示bash的完整路径名

[[email protected] shells]# echo $BASH

/bin/bash

BASH_VERSIONbash的版本

[[email protected] shells]# echo $BASH_VERSION

4.1.2(1)-release

HISTCMD在历史指令中的排列编号[[email protected] shells]# echo $HISTCMD

1045

HISTCONTROL控制指令是否存入历史脚本文件中。

[[email protected] shells]# echo $HISTCONTROL

ignoredups

HISTFILE设定历史脚本文件的路径文件名

[[email protected] shells]# echo $HISTFILE

/root/.bash_history

HISTFILESIZE设定历史脚本文件存储指令的最大行数。[[email protected] shells]# echo $HISTFILESIZE

1000

HISTIGNORE不存入历史脚本文件的指令样式
HOME定用户的家目录位置

[[email protected] shells]# echo $HOME

/root

HOSTNAME显示主机名

[[email protected] shells]# echo $HOSTNAME

hadoop1

HOSTTYPE显示主机形态。[[email protected] shells]# echo $HOSTTYPE

i386

MACHTYPE描述主机形态的GNU格式[[email protected] shells]# echo $MACHTYPE

i386-redhat-linux-gnu

MAIL显示当前用户邮件目录[[email protected] shells]# echo $MAIL

/var/spool/mail/root

MAILCHECK每隔多久就检查一次邮件

[[email protected] shells]# echo $MAILCHECK

60

PATH命令的搜寻路径

[[email protected] shells]# echo $PATH

/usr/lib/qt-3.3/bin:/usr/local/sbin:.....

PPID父进程的进程编号。

[[email protected] shells]# echo $PPID

2850

RANDOM随机函数

[[email protected] shells]# echo $RANDOM

29446

REPLYselect和read没有设定读取变量时,默认的变量名称为REPLY。
UID用户ID

[[email protected] shells]# echo $UID

0

USER用户名

[[email protected] shells]# echo $USER    

root

LOGNAME登录用户的用户名

[[email protected] shells]# echo $LOGNAME

root

PS1

PS2

提示符

[[email protected] shells]# echo $PS1

[\[email protected]\h \W]\$

[[email protected] shells]# echo $PS2

>

TERM终端类型

[[email protected] shells]# echo $TERM

vt100

PWD当前目录

[[email protected] shells]# echo $PWD 

/u02/shells

LANG设置当前语系的名称

[[email protected] shells]# echo $LANG

en_US

[[email protected] shells]# echo $LANGUAGE

en_US

SECONDS显示当前shell的启动的时间
TMOUT若该变量的值大于0的话,则bash会在等待TMOUT秒后还没有任何操作就会自动结束当前的bash shell.


函数范围变量


$1~$n

位置参数

传入程序或函数式的参数,第一个参数$1,第二参数$2


$0执行程序的名称

$*

代表所有的位置参数,并且视为一个字符串。

[email protected]

代表所有的位置参数,但[email protected]代表各位置参数组成的串行。

$#

位置参数的个数。

$?

上一条命令执行结束后的传回值。通常0代表执行成功,非0代表执行有误。

$$

目前bash shell的进程编号。

$_

a. script执行时,bash的绝对路径。

b. 上一个命令执行时,最后一个位置参数,如上一个命令是:test.sh ABC 123 xyz,则$_的值为’xyz’。

c. 检查邮件时,$_的值为邮件文件名。


特殊的IFS

 Shell 脚本中有个变量叫 IFS(Internal Field Seprator) ,内部域分隔符.IFS包含系列空白字符

$ echo $IFS  
  
$ echo "$IFS" | od -b  
0000000 040 011 012 012  
0000004

表格 B-4. 参数替换和扩展

表达式含义
${var}变量var的值, 与$var相同


${var-DEFAULT}如果var没有被声明, 那么就以$DEFAULT作为其值 *
${var:-DEFAULT}如果var没有被声明或其值为空, 那么就以$DEFAULT作为其值 *


${var=DEFAULT}如果var没有被声明, 那么就以$DEFAULT作为其值 *
${var:=DEFAULT}如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 *


${var+OTHER}如果var声明了, 那么其值就是$OTHER, 否则就为null字符串
${var:+OTHER}如 果var被设置了, 那么其值就是$OTHER, 否则就为null字符串(修改现有值)


${var?ERR_MSG}如果var没 被声明, 那么就打印$ERR_MSG *
${var:?ERR_MSG}如果var没 被设置, 那么就打印$ERR_MSG *


${!varprefix*}匹配之前所有以varprefix开头进行声明的变量
${[email protected]}匹配之前所有以varprefix开头进行声明的变量


表格 B-5. 字符串操作

表达式含义
${#string}$string的长度


${string:position}$string中, 从位置$position开始提取子串
${string:position:length}$string中, 从位置$position开始提取长度为$length的子串


${string#substring}从 变量$string的开头, 删除最短匹配$substring的子串
${string##substring}从 变量$string的开头, 删除最长匹配$substring的子串
${string%substring}从 变量$string的结尾, 删除最短匹配$substring的子串
${string%%substring}从 变量$string的结尾, 删除最长匹配$substring的子串


${string/substring/replacement}使用$replacement, 来代替第一个匹配的$substring
${string//substring/replacement}使 用$replacement, 代替所有匹配的$substring
${string/#substring/replacement}如 果$string前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring
${string/%substring/replacement}如果$string后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring




expr match "$string" ‘$substring‘匹配$string开头的$substring* 的长度
expr "$string" : ‘$substring‘匹 配$string开头的$substring* 的长度
expr index "$string" $substring$string中匹配到的$substring的第一个字符出现的位置
expr substr $string $position $length$string中 从位置$position开始提取长度为$length的子串
expr match "$string" ‘\($substring\)‘$string的 开头位置提取$substring*
expr "$string" : ‘\($substring\)‘$string的 开头位置提取$substring*
expr match "$string" ‘.*\($substring\)‘$string的 结尾提取$substring*
expr "$string" : ‘.*\($substring\)‘$string的 结尾提取$substring*

http://allenh.blog.51cto.com/481430/1695810

http://blog.csdn.net/gaoming655/article/details/7238695

本文出自 “简单” 博客,请务必保留此出处http://dba10g.blog.51cto.com/764602/1914716

以上是关于shell实战:内置(built-in)变量的主要内容,如果未能解决你的问题,请参考以下文章

shell的变量输入read讲解与实战

MongoDB的内置角色 Built-In Roles

Built-in Functions(python3内置函数)

学习笔记16常用内置函数(Built-in Functions)

第三十九节,python内置全局变量

shell编程