shell 命令替换、变量替换 $() `` ${}

命令替换$() ``

Shell 命令替换是指将命令的输出结果赋值给某个变量
复制代码

Shell 中有两种方式能够完成命令替换,一种是反引号,一种是$(),使用方法以下:bash

variable=`commands`
variable=$(commands)
复制代码

其中,variable 是变量名,commands 是要执行的命令。commands 能够只有一个命令,也能够有多个命令,多个命令之间以分号;分隔。ui

a=`expr 1 + 1`
echo $a
复制代码

$( )与``区别

在操做上,这二者都是达到相应的效果,可是建议使用$( ),理由以下:

1.``很容易''搞混乱,尤为对初学者来讲。
2.在多层次的复合替换中,``必需要额外的转义字符处理(反斜线),而$( )比较直观。
3.$( )的弊端是,并非全部的类unix系统都支持这种方式,但反引号是确定支持的。
复制代码

变量替换 ${}

变量替换
变量替换能够根据变量的状态(是否为空、是否认义等)来改变它的值

能够使用的变量替换形式:

形式	说明
${var}	变量原本的值
${var:-word}	若是变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。
${var:=word}	若是变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。
${var:?message}	若是变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,能够用来检测变量 var 是否能够被正常赋值。
若此替换出如今Shell脚本中,那么脚本将中止运行。
${var:+word}	若是变量 var 被定义,那么返回 word,但不改变 var 的值。
复制代码