Linux 中 shell 中反引号与 $() 的对比
来源:互联网 发布:秦时明月知乎 编辑:程序博客网 时间:2024/05/29 02:26
这两者都是命令替换,命令替换是指:是Shell 执行命令并将命令替换部分替换为执行该命令后的结果。
比如:
[bob@centos home]$ val=hello[bob@centos home]$ echo $(echo $val)hello[bob@centos home]$ echo `echo $val`hello
或者:
[bob@centos home]$ echo $(date)2017年 06月 25日 星期日 20:24:20 CST[bob@centos home]$ echo `date`2017年 06月 25日 星期日 20:24:28 CST
区别:
反引号是 Bourne shell遗留下来的。
而
主要提倡使用$() 而不是 使用反引号有以下几个原因:
(1)当你写了这种命令使用反引号是会眼花的。而使用括号就清晰很多,嵌套也很方便。
libdir=$(dirname $(dirname $(which gcc)))/liblibdir=`dirname \`dirname \\\`which gcc\\\`\``/lib
(2)还有一个原因对反斜杠的处理
只有两个反斜杠时
[bob@centos home]$ echo "`echo \\a`"; echo "$(echo \\a)"a \a
增加后
[bob@centos home]$ echo "`echo \\\a`"; echo "$(echo \\\a)"\a\a
在加一个
[bob@centos home]$ echo "`echo \\\\a`"; echo "$(echo \\\\a)"\a\\a
面对单引号中如此诡异的行为,我有点发虚。
在看看在括号中,将反斜杠当做转义,都可以解释清楚。
(3)反引号 嵌套使用需要反斜杠转义
[bob@centos home]$ echo $(echo $(date))2017年 06月 25日 星期日 20:42:32 CST[bob@centos home]$ echo `echo `date``date[bob@centos home]$ echo `echo \`date\``2017年 06月 25日 星期日 20:42:42 CST[bob@centos home]$
综上所述:$() 是被提倡使用的也是首选方法,它具有清晰的语法,提高人的可读性,嵌套很直观,内部解析分开的对反引号的解析也符合人们的常识。而反引号是不被推荐的,其容易伪装的语法,而外观极其像单引号,而不推荐被使用。
参考:
What is the benefit of using $() instead of backticks in shell scripts?
阅读全文
0 0
- Linux 中 shell 中反引号与 $() 的对比
- Linux Shell中引号(单引号、双引号、反引号)的用法
- [linux]shell中,反引号(`)的应用
- Linux shell中反引号(`)的应用
- linux shell中,单引号、 双引号,反引号(``),$()的区别
- linux shell中,单引号、 双引号,反引号(``),$()的区别
- Linux shell中,单引号''、双引号""和反引号``的区别
- Shell中反引号(`)与$()用法的区别
- Shell中反引号(`)与$()用法的区别
- Shell中反引号(`)与$()用法的区别
- Shell中反引号(`)与$()用法的区别
- Shell中反引号和$()的区别
- Shell中引号、单引号、反引号简介
- Shell中引号、单引号、反引号简介
- linux中反引号`与$()得区别
- Linux中单引号双引号反引号的区别与应用
- shell中单引号、双引号、反引号、反斜杠的区别
- shell中单引号、双引号、反引号、反斜杠的区别
- 1 实战即套路
- HDU
- Oracle笔记(一)——创建虚拟机和安装centos7
- C++批判
- 《linux命令行与shell脚本编程大全》第三版
- Linux 中 shell 中反引号与 $() 的对比
- SSD配置、训练、测试以及应用到自己的数据集
- 98. Validate Binary Search Tree
- SDL教程(1)
- Latex error:cannot determine size of graphic
- 程序流程控制(二)--三元运算符
- Problem B. Patterns Overlap Google Kickstart Round A 2017
- Android Study 之 findViewById 变迁之路
- IP地址 网段的划分