内建变量
这些会预想bash脚本的行为
/bin/bash bash的二进制程序文件的路径
$BASH_ENV 这个环境变量会指向一个bash的启动文件,当一个脚本被调用的时候,这个启动文件将会被读取
$BASH_SUBSHELL 用来提示子shell的层次,bash3.0以后才被引用过来
$BASH_VERSINFO[n]
这是一个含有6个元素的数组, 它包含了所安装的Bash的版本信息. 这与下边的$BASH_VERSION很相像
$BASH_VERSION
安装在系统上的Bash版本号
echo $BASH_VERSION
3.00.14(1)-release
$FUNCNAME 当前函数名的调用!
如:test123 ()
{
echo "$FUNCNAME now executing"
}
$GLOBIGNORE
一个文件名的模式匹配列表
$GROUPS
前用户所属的组
$HOME
用户的home目录, 一般是/home/username
$HOSTNAME
hostname放在一个初始化脚本中, 在系统启动的时候分配一个系统名字
$HOSTTYPE
主机类型
就像$MACHTYPE, 用来识别系统硬件.
$IFS
内部域分隔符
这个变量用来决定Bash在解释字符串时如何识别域, 或者单词边界.
$LC_CTYPE
这个内部变量用来控制通配(globbing)和模式匹配中的字符串解释.
$MACHTYPE
机器类型
标识系统的硬件.
bash$ echo $MACHTYPE
i686
$OLDPWD
之前的工作目录("OLD-print-working-directory", 就是之前你所在的目录)
$OSTYPE
操作系统类型
bash$ echo $OSTYPE
linux
$PATH
可执行文件的搜索路径, 一般为/usr/bin/, /usr/X11R6/bin/, /usr/local/bin, 等等.
$PPID
进程的$PPID就是这个进程的父进程的进程ID(pid). [1]
和pidof命令比较一下.
$PROMPT_COMMAND
这个变量保存了在主提示符$PS1显示之前需要执行的命令.
$PS1
这是主提示符, 可以在命令行中见到它.
$PS2
第二提示符, 当你需要额外输入的时候, 你就会看到它. 默认显示">".
$PS3
第三提示符, 它在一个select循环中显示(参见例子 10-29).
$PS4
第四提示符, 当你使用-x选项来调用脚本时, 这个提示符会出现在每行输出的开头. 默认显示"+".
$PWD
工作目录(你当前所在的目录)
$* 以一个单字符显示所有向脚本传递的参数,与位置变量不同,此选项参数可以超9个
$$ 脚本运行的当前进程ID号
$! 后台运行最后一个进程的ID号
$@ 与$#相同,但是使用是加引号,并在引号中返回每个参数
$- 显示shell使用的当前选项,与set命令功能相同
$? 显示最后命令的推出状态。0表示没有错误,其他任何值表明有错误
操作字符串
匹配字符串开头的子串长度
expr match "$string" '$substring'
$substring是一个正则表达式.
expr "$string" : '$substring'
$substring是一个正则表达式.
1 stringZ=abcABC123ABCabc
2 # |------|
3
4 echo `expr match "$stringZ" 'abc[A-Z]*.2'` # 8
5 echo `expr "$stringZ" : 'abc[A-Z]*.2'` # 8
索引
expr index $string $substring
在字符串$string中所匹配到的$substring第一次所出现的位置.
1 stringZ=abcABC123ABCabc
2 echo `expr index "$stringZ" C12` # 6
3 # C 字符的位置.
4
5 echo `expr index "$stringZ" 1c` # 3
6 # 'c' (in #3 position) matches before '1'.
提取字串
[root@centos129 tmp]# echo ${string:0}
abcABC123ABCabc
[root@centos129 tmp]# echo ${string:1}
bcABC123ABCabc
[root@centos129 tmp]# echo ${string:2}
cABC123ABCabc
[root@centos129 tmp]# echo ${string:7:4}
23AB (提取字串长度为4)
从结尾开始提取字串比如
echo ${stringZ:(-4)} # Cabc
echo ${stringZ: -4} # Cabc
# 这样, 它就可以工作了.
# 使用圆括号或者添加一个空格可以"转义"这个位置参数.
[root@centos129 tmp]# echo `expr substr $string 1 2`
ab
提取第一个字符串开头包括第一个字符串后面的2个字符
[root@centos129 tmp]# echo `expr substr $string 1 3`
abc
提取第一个字符串开头包括第一个字符串后面的3个字符
[root@centos129 tmp]# echo `expr substr $string 2 3`
bcA
[root@centos129 tmp]# echo `expr substr $string 2 6`
bcABC1
cho `expr match "$stringZ" '\(.[b-c]*[A-Z]..[0-9]\)'` # abcABC1
5 echo `expr "$stringZ" : '\(.[b-c]*[A-Z]..[0-9]\)'` # abcABC1
6 echo `expr "$stringZ" : '\(.......\)'` # abcABC1
从$string的结尾提取
1 stringZ=abcABC123ABCabc
2 # ======
3
4 echo `expr match "$stringZ" '.*\([A-C][A-C][A-C][a-c]*\)'` # ABCabc
5 echo `expr "$stringZ" : '.*\(......\)'` # ABCabc
字串消除
从字符串的开头位置揭掉最短匹配的子字符串
stringZ=abcABC123ABCabc
echo ${stringZ#a*C} # 123ABCabc
截掉'a'到'C'之间最短的匹配字符串.
echo ${stringZ##a*C} # abc
# 截掉'a'到'C'之间最长的匹配字符串.
从$string的结尾位置截掉最长匹配的$substring.
stringZ=abcABC123ABCabc
echo ${stringZ%b*c} # abcABC123ABCa
# 从$stringZ的结尾位置截掉'b'到'c'之间最短的匹配.
echo ${stringZ%%b*c} # a
# 从$stringZ的结尾位置截掉'b'到'c'之间最长的匹配.
ABS之内部变量,操作字符串
原创
©著作权归作者所有:来自51CTO博客作者风光坏家伙的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
字符串变量
脚本编程
变量名 bc 字符串