此文仍然是自己学习shell的笔记 ,虽然大部分内容在网络上都有,但是自己记下来方便以后自己的查阅.
以下是可替换的参数:
${ Parameter } shell 读取从 ${ 到匹配的 } 之间的所有字符,作为同一个字的部分,即使该字包含大括号或元字符。如果有,替换指定的参数的值。以下情况下大括号是必需的:当 Parameter 参数后跟一个不被解释为其名称一部分的字母、数字或下划线时,或当一个命名的参数进行下标操作时。
如果指定的参数包含一个或多个数字,则它是一个位置参数 。多个数字的位置参数必须括起在大括号中。如果变量的值是 * 或 @,则替换每个以 $1 开始的位置参数(由字段分隔符分隔)。如果使用了一个带下标 * 或 @ 的数组标识,则替换每个元素(用字段分隔符分隔)的值。
${# Parameter } 如果 Parameter 参数的值是 * 或 @, 则替换位置参数的数量。否则,替换 Parameter 参数指定的长度。
${# Identifier [* ]} 替换 Identifier 参数指定的数组中的元素数。
${ Parameter :- Word } 如果设置了 Parameter 参数并且不为空,则替换其值;否则,替换 Word 参数的值。
${ Parameter – Word } 如果设置了 Parameter 参数,则替换其值;否则,替换 Word 参数的值。
${ Parameter : = Word } 操作符: 和= 没有空格, 如果未设置 Parameter 参数或其为空,则将它设置为 Word 参数的值。不能用这种方法指定位置参数。
${ Parameter
Word } 如果设置了 Parameter 参数并且它不为空,则替换其值。否则,打印 Word 变量的值并从 shell 退出。如果省略 Word 变量,则打印标准消息。
${ Parameter :+ Word } 如果设置了 Parameter 参数并且它不为空,则替换 Word 变量的值。
${ Parameter # Pattern } | ${ Parameter ## Pattern } 如果指定的 shell Pattern 参数匹配 Parameter 参数的值的开始部分,则此替换的值是 Parameter 参数删除匹配部分后的值。否则,替换 Parameter 参数的值。在第一种格式中,删除最小匹配模式。在第二种格式中,删除最大匹配模式。
${ Parameter % Pattern } | ${ Parameter %% Pattern } 如果指定的 shell Pattern 匹配 Parameter 变量的值的结束部分,则此替换的值是 Parameter 变量删除匹配部分后的值。否则,替换 Parameter 变量的值。在第一种格式中,删除最小匹配模式;在第二种格式中,删除最大匹配模式。
在先前的表达式中,Word 变量不被求值,除非它用作替换的字符串。这样,在下例中,pwd 命令只在没有设置 -d 标志或它为空时才执行:
echo ${d:-$(pwd)}
注: 如果 : 被从先前表达式中省略,则 shell 仅检查是否设置了 Parameter 参数。
PS:上述内容主要是来自IBM的shell学习资料.


据说这个学好,PHP自然而然就会了。
@mercy 觉得php和c语言有点相似,和shell倒是没有发现