3. 表示先前的工作目录(previous working directory),因此,如果你cd到其他目录下要放回前一个路径的时候,可以使用cd -来达到目的,其实,这里的[-]使用的是环境变量的$OLDPWD,注意:这里的[-]和前一点是不同的;
4. 减号或者负号,用在算术操作中。
=
等号(Equals)。
1. 赋值操作,给变量赋值,么有空格在等号两侧;
2. 在比较测试中作为比较符出现,这里要注意,如果在中括号中作为比较出现,需要有空格符在等号左右两侧。
+
加号(Plus)。
1. 算术操作符,表示加法;
2. 在正则表达式中,表示的是其前的这个匹配规则匹配最少一次;
3.在命令或过滤器中作为选项标记,在某些命令或者内置命令中使用+来启用某些选项,使用-来禁止;
4. 在参数替换(parameter substitution)中,+前缀表示替代值(当变量为空的时候,使用+后面的值)
%
百分号(modulo[percent sign])。
1.在算术运算中,这个是求模操作符,即两个数进行除法运算后的余数;
2. 在参数替换(parameter substitution)中,可以作为模式匹配。例子:
p=b*9
var="abcd12345abc479"
echo ${var%p}, ${var%%p}
##从右边开始查找(想想从左是那个符号?)
##任何在b和9之间的内容(含)
##第一个是找到最短的符合匹配项
##后一个是找最大符合的匹配项(贪婪匹配?)
~
波浪号(Home directory[tilde])。
这个和内部变量$HOME是一样的。默认表示当前用户的家目录(主目录),这个和~/效果一致,如果波浪号后面跟用户名,表示是该用户的家目录。
~+
当前的工作目录(current working directory)。
这个和内置变量$PWD一样。
~-
前一个工作目录(previous working directory)。
这个和内部变量$OLDPWD一致,之前的[-]也一样。
=~
Bash 版本3中有介绍,这个是正则表达式匹配。可用在[[]]测试中,比如:
var="this is a test message."
[["$var"=~ tf*message ]]&& echo "Sir. Found that."|| echo "Sorry Sir. No match be found."
##你可以修改中间的正则表达式匹配项,正则表达式可以但不一定需要使用双引号括起来。
^
脱字符(caret)。
1. 在正则表达式中,作为一行的行首(beginning-of-line)位置标志符;
2. 在参数替换(Parameter substitution)中,这个用法有两种,一个脱字符(${var^}),或两个(${var^^}),分别表示第一个字母大写,全部大写的意思(Bash version >=4)。
空白
空白符(Whitespace)。
空白符不仅仅是指空格(spaces),还包括制表符(tabs),空行(blank lines),或者这几种的组合。可用做函数的分隔符,分隔命令或变量,空行不会影响脚本的行为,因此可以用它来规划脚本代码,以增加可读性,在内置的特殊变量$IFS可以用来针对某些命令进行输入的参数进行分割,其默认就是空白符。在字符串或变量中如果有空白符,可以使用引号来规避可能的错误。
怎样,你有多少是了解的呢?Mitchell在开始的Shell脚本时候,发现在这里面有好多都是不认识呢。
说明:因为涉及到翻译,文中内容不一定完全翻译准确,如果你发现有错误的地方,还请包涵指正。
参考:
本文主要内容来源:Advanced Bash-Scripting Guide
参考内容为本篇成文之际给予Mitchell帮助较大的文章,在整个过程中还有很多网站信息给我提供了帮助,在此对他们的作者的无私贡献表示感谢!