一.内部变量
1.内建变量 $FUNCNAME,当前函数的名字
func()
{
echo "$FUNCNAME" #func
}
2.$IFS内部字段分割符
当shell读取输入时,它给出来分割单词的一组字符,它通常是空格,制表符和换行符。
$* 所有的参数用环境变量$IFS的第一个字符分割开
$@则不是用$IFS中的字符分割变量。
3.$LINENO表示在脚本中该变量出现时的所在的行数
4.$SECONDS脚本已运行的秒数,sleep num ,程序停止num秒
5.$TMOUT,经错$TMOUT后,shell提示符会超时,这将使此shell退出登录
6.在使用$*时一定要用引号引起,否则在某一些情况下会出错
$!在后台运行的最后一个作业的PID
$_保存迁移个命令最后一个参数的变量值
$?一个命令,函数或脚本自身的退出码
$$脚本本身的PID
二.操作字符串
1.字符串长度
${#string},expr length $string,expr "$string" : ‘.*’(单引号)
2.匹配字符串开头的字串的长度
expr match "$string" '$substring'
expr "$string" : '$substring' #substring is Resular Expressions
3.索引
expr index $string $substring#substring在string中第一次出现的位置
4.子串提取
(1)${string:position}
把$string中从第$postion个字符开始字符串提取出来.
如果$string是"*"或"@",则表示从位置参数中提取第$postion后面的字符串
(包括$position)
(2)${string:position:length}
把$string中$postion个字符后面的长度为$length的字符串提取出来。
如果$string参数是"*"或"@",则会提取第$length个位置参数开始的
共$length个参数
注意也可以从从右边开始提取
eg.string="abcABC123ABCabc"
echo ${stringZ:-4} # abcABC123ABCabc echo ${stringZ:(-4)} # Cabc echo ${stringZ: -4} # Cabc ()和空格发挥了作用
(3)expr substr $string $position $length
提取$string中从位置$postition开始的长度为$length的子字符串。
(4)expr match "$string" '\($substring\)'expr "$string" : '\($substring\)'从$string字符串左边开始提取提取由$substring描述的正则表达式的子串。 (5)expr match "$string" '.*\($substring\)'expr "$string" : '.*\($substring\)'从$string字符串结尾开始提取由$substring描述的正则表达式的子串。5.字串移动(1)${string#substring} 从$string左边开始,剥去最短匹配$substring子串.(2)${string##substring} 从$string左边开始,剥去最长匹配$substring子串.(3)${string%substring} 从$string结尾开始,剥去最短匹配$substring子串。(4)${string%%substring} 从$string结尾开始,剥去最长匹配$substring子串。6.字串替换(1)${string/substring/replacement} 用$replacement替换由$substring匹配的字符串。 ${string//substring/replacement} 用$replacement替换所有匹配$substring的字符串。 1 stringZ=abcABC123ABCabc 2 3 echo ${stringZ/abc/xyz} # xyzABC123ABCabc 4 #用'xyz'代替第一个匹配的'abc'. 5 6 echo ${stringZ//abc/xyz} # xyzABC123ABCxyz 7 # 用'xyz'代替所有的'abc'.
1 stringZ=abcABC123ABCabc 2 3 echo ${stringZ/#abc/XYZ} # XYZABC123ABCabc 4 # 用'XYZ'替换前端的'abc'. 5 6 echo ${stringZ/%abc/XYZ} # abcABC123ABCXYZ 7 # 用'XYZ'替换后端的'abc'. |
如果变量parameter已经设置,则使用该值,否则打印err_msg错误信息
来源:https://www.cnblogs.com/xdzone/archive/2011/03/15/1984247.html