基础字符
#
注释,用于一行行首(#!
除外)或本行空白的后边。
;
命令分隔符,可以在一行中写多个命令。
;;
终止case选项。
.
等价于source命令,这是一个bash内建命令。
.
作为文件名的前缀时,则该文件为隐藏文件。作为目录名的一部分.
表示当前目录,..
表示上一级目录。用于字符匹配中,作为正则表达式的一部分,用来匹配任何单个字符。
“
部分引用,”STRING”阻止了一部分特殊字符。
'
全引用,’STRING’阻止了全部特殊字符。
,
逗号连接了一系列算术操作,虽然里面的内容都被运行了,当只有最后一项被返回。
转义字符
/
文件名路径分隔符,或用来作除法。
`后置引用,命令替换。
:
空命令,空操作,什么都不做
!
取反操作符。
*
万能匹配符,用于文件名匹配或正则表达式中。注意:*
在正则表达式匹配中与文件名匹配中是不同的。数学运算。**
幂运算。
?
测试操作,或在正则表达式中匹配任意单个字符。
$
变量替换,或在正则表达式中作为行结束符。
$$
变量的间接引用。
^
正则表达式中表示行首。
${}
参数替换。
$*, $@
位置参数。
$?
退状态变量。
$$
进程ID变量,保存了运行脚本进程ID。
()
命令组。注意:在()中的命令列表将作为一个子shell来运行。
{xxx, yyy, ...}
大括号扩展。
{}
代码块,又称为内部组。事实上,这个结构创建了一个匿名函数,但是与函数不同的是,在其中声明的变量,对于脚本其它部分的代码来说还是可见的。
{};
路径名
[]
test
[[]]
test
[]
数组元素,或正则表达式中作为字符匹配的一个范围。
(())
算术扩展和赋值,以及允许C风格的变量处理机制。
> &> >> >&
重定向。
<,>
正则表达式中的单词边界。
|
管线。
>|
强制重定向。
+,-,*,/,**,%
算术操作符
||
逻辑或
&&
逻辑与
!
逻辑非
<<
左移一位
<<=n
左移n位
>>
右移一位
>>=n
右移n位
&
按位与
&=
按位与赋值
|
按位或
|=
按位或赋值
~
按位非
^, XOR
按位异或
^=
异或赋值
&
后台运行命令
注释
在 echo 中转义的
#
是不能作为注释的# 数制转换(使用二进制表示),不是一个注释,双括号表示对于数字的处理
分号(;)命令分隔符
使用分号
;
可以在同一行上写两个或两个以上的命令。
每个if语句都要用fi结束,而且是每一个if都要对应一个fi
双分号(;)终止 case 选项 和 点号(.)等价于 source 命令
使用双分号
;;
可以终止 case 选项。
source
命令用于在当前 bash 环境下读取并执行 FileName.sh 中的命令。
美元符号($)
通常情况下,在工作中用的最多的有如下几项:
$0:Shell 的命令本身
$1 到 $9:表示 Shell 的第几个参数
$#:传递到脚本的参数个数
$*:以一个单字符串显示所有向脚本传递的参数$@ 与$*相同。
$!:后台运行的最后一个进程的 ID 号
$$:脚本运行的当前进程 ID 号
$-:显示 Shell 使用的当前选项
$? :显示最后命令的执行情况,0表示没有错误。
…
![]()
单引号(')和双引号('')
同样是
$HOME
,单引号会直接认为是字符,而双引号认为是一个变量。![]()
双引号(")
"STRING" 将会阻止(解释)STRING 中大部分特殊的字符。
单引号(')
'STRING' 将会阻止 STRING 中所有特殊字符的解释,这是一种比使用"更强烈的形式。
斜线和反斜线
斜线(
/
)文件名路径分隔符。分隔文件名不同的部分(如
/home/bozo/projects/Makefile
)。也可以用来作为除法算术操作符。
注意在 linux 中表示路径的时候,许多个
/
跟一个/
是一样的。/home/shiyanlou
等同于////home///shiyanlou
。反斜线(
)
一种对单字符的引用机制。
X
将会“转义”字符 X。这等价于"X",也等价于'X'。
通常用来转义双引号(
"
)和单引号('
),这样双引号和单引号就不会被解释成特殊含义了。
- 符号 说明
表示新的一行
表示回车
表示水平制表符
v
表示垂直制表符表示后退符
a
表示"alert"(蜂鸣或者闪烁)