# 注释,行首以#开头为注释(#!是个例外)
; 命令分隔符,可以用来在一行中写多个命令
;; 用于终止case选项
. 等价于source命令
作为文件名的一部分,.如果作为文件名的前缀的话,那么这个文件将成为隐藏文件。将不被ls命令列出
如果作为目录名的的话,表示的是当前目录。“..”表示的是上级目录
也可作为正则表达式的一部分,用于匹配任何单个字符
" 部分引用。"string"阻止了一部分的特殊字符
' 全引用。“string”阻止了全部特殊字符
, 逗号连接了一系列的算术操作,虽然里边所有的内容都被运行了,但只有最后一项被返回
\ 转义字符
/ 文件名路径分隔符
除法操作符
` 后置引用,命令替换
: 空命令。也可以被认为与shell的内建命令“true”作用相同
死循环,如while :
在if/then中的占位符,如if condition
then : #什么都不做,引出分支
在一个二元命令中提供一个占位符,如:${username=`whoami`}
可用于注释行,但会对该注释行进行错误检查
用于环境变量等地方做分隔符
! 取反操作
* 万能匹配符
数学乘法
** 为幂运算
? 测试操作。在一个确定的表达式中,用?来测试结果
在正则表达式中匹配任意的单个字符
$ 变量替换
在正则表达式中作为行结束符
${} 参数替换
$*,$@ 位置参数
$? 退出状态变量
$$ 进程id
() 命令组,在()中的命令列表,将作为一个子shell来运行,在()中的变量,由于是在子shell中,所以对于脚步剩下的部分是不可用的
用于数组初始化
{} 代码块。又被称为内部组。事实上,这个结构创建了一个匿名的函数,但是与函数不同的是,在其中声明的变量,对于脚本其他部分的代码来说还是可见的
[] test
数组元素
(()) 数学计算的扩展,在(())中可以使用一些数字计算
| 管道,分析前边命令的输出,并将输出作为后边命令的输入
>| 强制重定向
& 后台运行一个命令
~ home目录
~+ 当前工作目录
~- 之前的工作目录
^ 在正则表达式中表示行首