shell 中的 ` 和 $()
sh(1) 脚本中,` 和 $() 的作用类似。比如:
rm
find /foo/bar -ctime +3d -type f`` 【注1】
表示将 find 的输出结果作为rm的命令行输入。
常写 sh(1) 脚本的人可能会用另一个写法:
rm $(find /foo/bar -ctime +3d -type f)
这个写法和第一种是等价的。不过,$()的好处是可以嵌套。
个人比较倾向于使用 ` 而不是 $(),主要有三个原因:
- () 和 {} 在显示时差别很小,容易引起误会;
- 复杂到需要嵌套的命令通常是不对的;
- ` 可以在 sh 和 [t]csh 中使用,而 $() 只能在 sh 中使用。
【注1】FreeBSD系统中,此处实际可以用 find /foo/bar -ctime +3d -type f -delete
来代替。