shell替换

如果表达式中包含特殊字符,shell将会进行替换。例如,前面学习过的变量的使用(在双引号中使用变量)就是一种替换,转义字符也是一种替换
a=10
echo -e "value of a is a \n" echo "value of a isa \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并未成功替换,不知为何,有知道的朋友还望不吝赐教,在此谢谢!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容