Shell替换,它一般是在输入一个包含通配符或$参数的命令时自动发生。
变量替换使得shell程序员可以基于变量的状态来操纵变量的值,变量替换有两类:
变量有值时发生动作
变量均值时发生动作
${parameter:-word} 若parameter为空或未设置,则用word代替parameter进行替换,parameter的值不变
${parameter:=word} 若parameter为空或未设置,则parameter设为值word
${parameter:?message} 若parameter为空或未设置,则message作为标准错误打印出来,这可用来检查变量是否正确设置
${parameter:+word} 若parameter设置了,则用word代替parameter进行替换,parameter的值不变
替换缺省值
abc=${para:-localhost}#没有定义para这个变量
echo $abc
localhost
echo $para#什么都没有
赋予一个缺省值
abc=${para:=localhost}#没有定义para这个变量
echo $abc
localhost
echo $para
localhost
命令替换
使得可以捕获一个命令的输出而在另一命令中替换它,
DATE=`date`#这里是后引号
grep `id -un` /etc/passwd
算术替换
使得可以使用shell执行一些简单的整数计算
abc=$((expression))#expression中只能有加减乘除和括号
abc=$((5+3))
引用
Shell对这些字符以及其他特殊字符的解释方式通常是很有用的,但有时关掉Shell替换让每个字符代表自己的意思也很有必要。关掉一个字符的特殊意义称为引用
通常可以用以下三种方式进行
使用反斜线字符(\)
使用单引号(')
使用双引号(")
如果要直接输出以上字符,可以用反斜线或直接把它在单引号或双引号中。
如echo hello world是可以的
但是echo hello;world就不行了
;告诉shell已经到达一个命令的尾部,并且后面将是一条新命令。
解决这个问题可以这么做
echo hello\; world
流控制
在脚本中有两种强大的流控制机制可以利用