官方文档:Advanced Bash-Scripting Guide: Special Characters
语法 | 说明 |
---|---|
$$ | Shell本身的PID(ProcessID) |
$! | Shell最后运行的后台Process的PID |
$? | 最后运行的命令的结束代码(返回值) |
$- | 使用Set命令设定的Flag一览 |
$* | 所有参数列表。如”$*“用「”」括起来的情况、以”$1 $2 … $n”的形式输出所有参数。 |
$@ | 所有参数列表。如”$@”用「”」括起来的情况、以”$1” “$2” … “$n” 的形式输出所有参数。 |
$# | 添加到Shell的参数个数 |
$0 | Shell本身的文件名 |
$1~$n | 添加到Shell的各参数值。$1是第1参数、$2是第2参数… |
# | 注释功能 |
~ | 帐户的 home 目录 |
~user | 用户user的home目录 |
~+ | 当前工作目录,和pwd作用相同 |
~- | 上次的工作目录 |
; | 在 shell 中,担任连续指令功能的符号就是分号 |
;; | 专用在 case 的选项,担任 Terminator 的角色 |
. | 逗号表示当前目录 |
.. | 两个逗号表示上层目录 |
' | 被单引号用括住的内容,将被视为单一字串。在引号内的代表变数的$符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换 |
" | 被双引号用括住的内容,将被视为单一字串。它防止通配符扩展,但允许变量扩展。这点与单引数的处理方式不同。 |
` | 反引号里面的字符串会被作为命令而执行 |
| | 管道 |
: | 在 bash 中,冒号是一个内建指令,表示什么事都不干,但返回状态值 0 |
? | 在文件名扩展上扮演的角色是匹配一个任意的字符,但不包含 null 字符 |
* | 在文件名扩展上扮演的角色是匹配任意字符,包含 null 字符 |
** | 两个星号在运算时代表次方的意思 |
$ | 变量替换,在正则表达式中用来表示行的末尾(end-of-line) |
${} | bash 对 ${} 定义了不少用法: - ${parameter:-word} - ${parameter:=word} - ${parameter:?word} - ${parameter:+word} - ${parameterffset} - ${parameterffset:length} - ${!prefix*} - ${#parameter} - ${parameter#word} - ${parameter##word} - ${parameter%word} - ${parameter%%word} - ${parameter/pattern/string} - ${parameter//pattern/string} |
( ) | 用括号将一串连续指令括起来,这种用法对 shell 来说,称为指令群组。指令群组有一个特性,shell会以产生 subshell 来执行这组指令。 除了上述的指令群组,括号也用在 array 变量的定义上 |
(( )) | 这组符号的作用与 let 指令相似,用在算数运算上,是 bash 的内建功能。所以,在执行效率上会比使用 let指令要好许多。 |
{ } | 有时候 script 当中会出现大括号中会夹着一段或几段以分号做结尾的指令,这种用法与上面介绍的指令群组非常相似,但有个不同点,它在当前的 shell 执行,不会产生 subshell。 大括号也被运用在函数的功能上。广义地说,单纯只使用大括号时,作用就像是个没有指定名称的函数一般。 此外,大括号还常用在字串的组合上,如: {userA,userB,userC}-{home,bin,data} |
[ ] | 常出现在流程控制中,扮演判断的作用。 这个符号在正则表达式中担任类似范围或集合的角色,如:rm -r 200[1234] |
[[ ]] | 这组符号与先前的 [] 符号,基本上作用相同,但她允许在其中直接使用 || 与 && 逻辑等符号。 |
|| | 逻辑或 |
&& | 逻辑与 |
& | 单一个& 符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作 |
+ | 在运算式中表示加法。 此外在正则表达式中,用来表示一或多个前面的字符 |
- | 在运算式中表示减法。 在 GNU 指令中,如果单独使用 - 符号,不加任何该加的文件名称时,代表标准输入的意思。 在 cd 指令中则比较特别,表示切换到上一次工作的目录:cd - |
% | 在运算式中,用来表示除法 |
= | 常在变量设定时使用 |
== | 常在条件判断式中看到,代表等于的意思 |
!= | 常在条件判断式中看到,代表不等于的意思 |
^ | 这个符号在规则表达式中,代表行的开头位置,在[]中也与!(叹号)一样表示“非” |
> >> < << :> &> 2&> 2<>>& >&n >&- <&n <&- <> <<< >| | 参见:Shell重定向详解 |