shell 脚本里的 特殊字符 $(( ))、$( )、``与${ }的区别

shell  脚本里的命令执行

1. 在bash中,$( )与` `(反引号)都是用来作命令替换的。

  命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。

$( )与``

在操作上,这两者都是达到相应的效果,但是建议使用$( ),理由如下:

``很容易与\'\'搞混乱,尤其对初学者来说,而$( )比较直观。
最后,$( )的弊端是,并不是所有的类unix系统都支持这种方式,但反引号是肯定支持的。

关于命令嵌套:  

  $(ps -ef|grep `ps -ef|grep nginx |grep \'ottcache\'|grep \'master process\'|awk \'{print $2}\' ` |grep \'worker process\'|awk \'{print $2}\')

里面的命令用 `` 反引号得出 pid, 再替换掉该位置, $()  执行另一个命令。

[root@CGSLV5_03 home]# echo today is $(date "+%Y-%m-%d") today is 2019-08-14 [root@CGSLV5_03 home]# echo today is `date "+%Y-%m-%d"` today is 2019-08-14 [root@CGSLV5_03 home]#
[root@localhost ~]# echo Linux `echo Shell `echo today is `date "+%Y-%m-%d"``` Linux Shellecho today is 2017-11-07 #过多使用``会有问题 [root@localhost ~]# echo Linux `echo Shell $(echo today is $(date "+%Y-%m-%d"))` Linux Shell today is 2017-11-07 ``和$()混合使用 [root@localhost ~]# echo Linux $(echo Shell $(echo today is $(date "+%Y-%m-%d"))) Linux Shell today is 2017-11-07 #多个$()同时使用也不会有问题

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwxxdy.html