变量置换
变量置换一共有四种形式
-
缺省值置换
语法格式:${param:=word}
如果param值为空,或者未赋值,那么word将替代param作为该表达式的返回值,但并不改变param的值
示例如下:
可以很清楚地看到,myfruit变量的值依然还是空的,fruit变量的值变成了APPLE -
缺省值赋值
语法格式:${param:=word}
如果param值为空,或者未赋值,那么word将把自己的值赋给param
示例如下: -
空值错误
语法格式:${param:?msg}
当变量param未赋值或者为空的时候,会输出一个错误信息msg到STDERR
示例如下: -
有值置换
语法格式:${param:+word}
如果变量param有值,变量word取代param作为表达式的返回值,但param的值不变
示例如下:
命令置换
就是将命令的输出结果作为变量的值赋给变量
示例:
我么也可以直接将命令置换作为其他命令的参数:
算式置换
可以帮助用户在shell完成基本的整数运算
语法格式$((expr))
引用
使用反斜线实现引用
其实这个反斜杠\就是起到一个转义的作用,使得具有特殊意义的字符失效
引用即为转义,此处不再赘述
使用单引号
对于一个包含了很多特殊字符的echo语句,我们可以直接使用单引号把要输出的语句引起来
使用双引号
使用单引号的局限性是很大的,它把所有的特殊符号都给转义了,使用双引号就不会出现这种问题,双引号禁止了除$ 和 '以外的所有元字符,使用反引号 ` 引起来的命令会被正常执行: