shell 中的 ` 和 $()

• 本文约 238 字,阅读大致需要 1 分钟 | Development

sh(1) 脚本中,`$() 的作用类似。比如:

rm `find /foo/bar -ctime +3d -type f`

📓 注意

FreeBSD系统中,此处实际可以用 find /foo/bar -ctime +3d -type f -delete 来代替。

表示将 find 的输出结果作为 rm 的命令行输入。

常写 sh(1) 脚本的人可能会用另一个写法:

rm $(find /foo/bar -ctime +3d -type f)

这个写法和第一种是等价的。不过,$()的好处是可以嵌套。

📜 历史文件已不具备现实意义

zsh 真香。以下内容作者已不再同意。

个人比较倾向于使用 ` 而不是 $(),主要有三个原因:

  1. (){} 在显示时差别很小,容易引起误会;
  2. 复杂到需要嵌套的命令通常是不对的;
  3. ` 可以在 sh[t]csh 中使用,而 $() 只能在 sh 中使用。