详解
${parameter}
和$parameter是相同的,都是表示变量parameter的值。在一些环境中,使用 ${parameter}比较不会引起误解.
${parameter-default}, ${parameter:-default}
如果变量没有被设置,使用默认值。${parameter-default}和 ${parameter:-default}几乎是相等的。它们之间的差别是:当一个参数已被声 明,但是值是NULL的时候两者不同.
${parameter=default}, ${parameter:=default}
如果变量parameter没有设置,把它设置成默认值. 两种形式几乎相同,只是和上 面的一样: 只有当$parameter变量被声明且被设置成null值时不同.
${parameter+alt_value}, ${parameter:+alt_value}
如果变量parameter设置,使用alt_value作为新值,否则使用空字符串。除了引 起的当变量被声明且值是空值时有些不同外,两种形式几乎相等。
${parameter?err_msg}, ${parameter:?err_msg}
如果变量parameter已经设置,则使用该值,否则打印err_msg错误信息。这两种 形式几乎相同,仅有和上面所说的一点不同:带有:使当变量已声明但值是空值时 不同.
${#var}
字符串长度(即变量$var的字符个数)。对于数组来说,${#array}是数组的第一 个元素的升序.
例外情况 :
- ${#*}和${#@} 表示位置参数的个数.
- 对于一个数组来说,${#array[]}和${#array[@]}表示数组中元素的个数.
删除从$var前端开始的最短或最长匹配$Pattern的字符串。
$ cd /usr/local/share # 先进入一个长点的目录
$ echo "$PWD"
/usr/local/share # 得到当前路径的全名
$ echo "${PWD#*/}" # 用删除从 "/usr/local/share" 字符串开头最小匹配 "*/" 的字符串
usr/local/share
$ echo "${PWD##*/}" # 删除最长匹配
share
${var%Pattern}, ${var%%Pattern}
删除从$var后端(结尾)开始的最短或最长匹配$Pattern的字符串。
${var/Pattern/Replacement}
在变量var第一个匹配Pattern的字符串用Replacement代替. 如果省略了 Replacement ,则第一个匹配Pattern的字符串会被删除.
