为什么要在 shell 脚本中转义简单字符?

为什么要在 shell 脚本中转义简单字符?

我刚刚打开了一个旧版 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。用严格的路径覆盖它将会违背路径的目的,即扩展和处理许多架构、环境和用户。

相关内容