以BASH 为讨论的shell 语言以下就是一些特殊变量
$ SHELL 的PID (由来标识进程的一个数)
- 当前sh的选项
? 上一个命令的退出状态值 

! 最后一个放入后台作业的PID值
比较有用的应该算? 和 !,注意引用这些变量的值同样需要用$。($$,$-,$?,$!)

再谈谈所谓的变量修改符。
shell中有一些特殊的操作符可以检验和修改变量。

我觉的这些操作符,其实并不怎么重要.
我用C++的?:操作符来说明一下。
${var:-value} 等价于 var?var:value;
${var:+value} 等价于 var?var:(var=value)

${var:+value} 等价于 var?value:NULL
${var:?value}的作用是当var没有设置或为NULL是将var的名字和value作为这个表达式的值。常用于自定义错误输出。
$ echo ${namex:?”namex is undefined”}

namex: namex is undefined
如果你用如下命令,得到的是系统的错误输出。
$ echo ${namex:?}
namex : parameter null or not set

这里:-的作用是如果name设置了值而不为NULL,这个值就是jack否则就是mike还有两个比较容易理解的操作。
${val:offset} 从offset开始提取子字符串
${val:offset:length} 从offset开始提取length长子字符串