shell替换

如果表达式中包含特殊字符,shell将会进行替换。例如,前面学习过的变量的使用(在双引号中使用变量)就是一种替换,转义字符也是一种替换
a=10
echo -e "value of a is a \n"
发现在mac系统下加不加-e在双引号中都会对变量进行转义替换

命令替换

命令替换的语法是 Command 注意是反引号,不是单引号,这个键位于Esc键下方
命令替换是指shell可以先执行命令,将输出结果暂时保存,在适当的地方输出。

DATE=`date`
echo "Date is $DATE"

USERS=`who|wc -l`
echo "logged in user are$USERS"

UP=`date;uptime`
echo "Uptime is $UP"
形式 说明
${var} 变量本来的值
${var:+word} 如果变量var被定义,那么返回word,但不改变var的值
${var:-word} 如果变量var为空或者已被删除(unset),那么返回word,但不改变var的值
${var:=word} 如果变量var为空或者已被删除(unset),那么返回word,并将var的值设置为word
${var:?message} 如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可 以被正常赋值。若此替换出现在Shell脚本中,那么脚本将停止运行。
echo ${var:-"variable is not set"}
echo "1 - value of var is ${var}"

echo ${var:="variable is not setting"}
echo "2 - value of var is ${var}"

unset var
echo ${var:+"this is default value"}
echo "3 - value of var is ${var}"

var="prefix"
echo ${var:+"this is a default value"}
echo "4 - value of var is ${var}"

echo ${var:?"print this message"}
echo "5 - value of var is ${var}"

上述代码,2、4、5都执行替换成功,1和3并未成功替换,不知为何,有知道的朋友还望不吝赐教,在此谢谢!

你可能感兴趣的:(shell替换)