![为什么要在 shell 脚本中转义简单字符?](https://linux22.com/image/22116/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E5%9C%A8%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E8%BD%AC%E4%B9%89%E7%AE%80%E5%8D%95%E5%AD%97%E7%AC%A6%EF%BC%9F.png)
我刚刚打开了一个旧版 shell 脚本(在 Solaris 上用旧 ksh88 编写),发现整个代码中重复了以下内容:
[ -f $myfile ] && \rm -f $myfile
转义的反斜杠让我觉得很奇怪。
我知道这是故意的,因为这种(显然无用的)转义在整个代码中重复出现。原作者早已不在了,我无法联系到他询问。
这仅仅是作者的一个有趣的特质,还是某种在某个时间点有意义但已被弃用的良好实践?或者也许实际上是推荐的做事方式,而我完全错过了一些东西?
答案1
这用于别名保护:
$ ls
.bashrc a b
$ alias ls
alias ls='ls $LS_OPTIONS'
$ \ls
a b
答案2
通常,为 rm 提供一些保护措施是一种很好的做法,这通常是通过别名来实现的。在多用户环境中,您经常会看到许多这样的保护措施。
对于 shell 脚本从业者来说,禁用这些保护措施通常很有用,因为他们知道自己在做什么。如前所述,这是通过在命令前面加上\
.
与 @Sorpigal 的建议相反,我绝对建议不要取消别名设置,以免脚本无法为用户提供保护。此外,使用完整路径也是不明智的,因为 rm 可能出于某种原因位于辅助路径中 - 即 GNU rm 与 BSD rm。用严格的路径覆盖它将会违背路径的目的,即扩展和处理许多架构、环境和用户。