linux shell bash 内置变量参考

特殊的shell变量

变量 含义
$0 脚本名
$1 -$9 位置参数1-9
${10} 位置参数10
$# 位置参数的个数
"$*" 所有位置参数(作为单个字符串)
"[email protected]" 所有位置参数(每个作为单独字符串)
${#*} 传递到脚本中的命令行参数的个数
${#*} 传递到脚本中的命令行参数的个数
$? 返回值
$$ 脚本进程的PID
$- 传递到脚本中的标识
$_ 之前命令的最后一个参数
$! 运行在后台的最后一个作业的进程ID(PID)

测试操作: 二元比较

算 术比较

操作符 含义
-eq 等于
-ne 不等于
-lt或((<)) 小于
-le或((<=)) 小于等于
-gt 或((>)) 大于
-ge 大于等于

字符串比较

操作符 含义
=  
==  
!=  
< 小于(ASCII)
> 大于(ASCII)
-z 字符串为空
-n 字符串不为空

果在双中括号 [[ ... ]] 测试结构中使用的话, 那么就不需要使用转义符\了.

文件类型操作

操作符 含义
-e 文件是否
-f 标准文件
-d 目录
-h hard link链接
-L link
-b 块设备
-c 字符设备
-p 管道
-S socket套接字
-t 文件与终端相关联
-N 文件最后一次读取后被修改过
-O 文件属主是自己
-G 组id与执行者一致
-s 文件大小不为0
-r 文件具有读权限
-w 文件具有写权限
-x 文件具有执行权限
-g 设置了sgid标记
-u 设置了suid标记
-k 设置了黏贴位
file1 -nt file2 file1比文件file2新
file1 -ot file2 file1比file2旧
file1 -ef file2 fiel1和fiel2是同一个文件的硬链接

参数替换和扩展

表达式 含义
${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开头进行声明的变量

字符串操作

表达式 含义
${#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*

$substring是一个正 则表达式.

一些结构的汇总

表达式 含义
if [ CONDITION ] 测 试结构
if [[ CONDITION ]] 扩 展的测试结构
Array[1]=element1 数 组初始化
[a-z] 正 则表达式的字符范围
${!variable} 间 接变量引用
{ command1; command2; . . . commandN; } 代码块
{string1,string2,string3,...} 大 括号扩展
( command1; command2 ) 子shell中 执行的命令组
Array=(element1 element2 element3) 数组初始化
result=$(COMMAND) 在 子shell中执行命令, 并将结果赋值给变量
>(COMMAND) 进程替换
<(COMMAND) 进 程替换
(( var = 78 )) 整型运算
var=$(( 20 + 5 )) 整型运算, 并将结果赋值给变量
"$variable"  
result=COMMAND 在 子shell中运行命令, 并将结果赋值给变量

参考http://blog.csdn.net/u012749933/article/details/48030503

时间: 2024-11-07 09:52:37

linux shell bash 内置变量参考的相关文章

shell学习之常用bash内置变量

常用的Bash内置变量 1 BASH_COMMAND当前执行的命令 2 LINENO显示当前所在行号 /bin/bash echo "this is test about ARG LINENO" echo "line now in :$LINENO" 结果为 [[email protected] shell]# ./bash.sh this is test about ARG LINENO line now in :   4 方便调试 3 FUNCNAME[i]在第

BASH内置变量

BASH内置变量 (1).BASH 作用:bash的完整路径.默认为/bin/bash (2).BASH_ENV 作用:仅在非交互模式中适用.在执行shell脚本时,会先检查该变量是否指定了启动 脚本,若指定则先执行它指定的启动脚本. (3).BASH_VERSION 作用:bash的版本号 实例:echo $BASH_VERSION (4).CDPATH 作用:cd的搜索路径,多个路径用':'隔开 实例: CDPATH="/tmp/A/B:/var/log" (假设当前目录为/hom

linux shell字符串内置的常用操作(获取长度、查找、替换)

在编写shell程序时,经常会涉及到字符串相关操作.有许多命令语句,如awk,sed都能够做字符串各种操作. 事实上shell内置一系列操作符号,能够达到相似效果,使用内部操作符会省略启动外部程序等时间,因此速度会很的快.如果内置的操作符能够做到的,优先使用内置的. 1 推断读取字符串值                                        

Jmeter之Bean shell使用-常用内置变量

Bean Shell常用内置变量   JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”); ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext. vars - (JMeterVariables):操作jmeter变量,这个变量实

Linux 基础知识:Bash的内置变量

Bash默认建立了许多内置变量,以下介绍些这类变量. 1. BASH 用途:显示bash的完整路径名.通常是:/bin/bash或/usr/local/bin/bash. 用例:echo $BASH 2. BASH_VERSION 用途:bash的版本. 用例:echo $BASH 4执行结果:4.1.2(1)-release 3. FUNCNAME 用途:在函数式执行期,此变量内容即为函数式的名称. 用例: function show_name() { echo $FUNCNAME echo

Linux进阶之bash编程四(内置变量)

一:基础回顾 1:文件清空 [[email protected] test]$ >log.txt 2:正常和错误重定向输出 //正常和错误都追加输出到同样地方 [[email protected] test]$ ifconfig &>>log.1 //正常输出重定向[[email protected] test]$ ifconfig >log //错误输出重定向[[email protected] test]$ ifconfig 2>log.23:命令执行控制 //休

Linux Bash内置命令大全详细介绍

转自:http://os.51cto.com/art/201006/207329.htm 主要Shell内置命令 Shell有很多内置在其源代码中的命令.这些命令是内置的,所以Shell不必到磁盘上搜索它们,执行速度因此加快.不同的Shell内置命令有所不同. A.2.1  bash内置命令 .:执行当前进程环境中的程序.同source. . file:dot命令从文件file中读取命令并执行. : 空操作,返回退出状态0. alias:显示和创建已有命令的别名. bg:把作业放到后台. bin

Linux基础教程 linux awk内置变量使用介绍

awk是个优秀文本处理工具,可以说是一门程序设计语言.下面是兄弟连Linux培训 给大家介绍的awk内置变量. 一.内置变量表 属性 说明 $0 当前记录(作为单个变量) $1~$n 当前记录的第n个字段,字段间由FS分隔 FS 输入字段分隔符 默认是空格 NF 当前记录中的字段个数,就是有多少列 NR 已经读出的记录数,就是行号,从1开始 RS 输入的记录他隔符默 认为换行符 OFS 输出字段分隔符 默认也是空格 ORS 输出的记录分隔符,默认为换行符 ARGC 命令行参数个数 ARGV 命令

Linux高级文本处理之gawk内置变量(一)

一.FS –输入字段分隔符 FS是awk内置变量,用来制定行分隔符,功能能-F一样,区别在于FS只能用在BEGIN语句块当中,命令格式如下: BEGIN{FS="SEPARATOR"} 实例1: [[email protected] ~]# awk 'BEGIN { FS=","; print "---------------------------\nName\tTitle\n------------------------"} {print