为什么要在shell脚本中转​​义琐碎的字符?


23

我刚刚打开了一个旧的shell脚本(在Solaris上用旧的ksh88编写),发现在整个代码中重复了以下内容:

[ -f $myfile ] && \rm -f $myfile

转义的反斜杠使我感到奇怪。

我知道这是故意的,因为在整个代码中都重复了这种(显然无用的)转义。原始作者早已不在,我无法与他取得联系以询问他。

这仅仅是作者的一个有趣的特质,还是某种在某个时间点变得有意义的已弃用的良好实践?也许实际上是推荐的做事方式,而我完全错过了一些东西?


3
尽管这样做有充分的理由,但使用这种方法在脚本中提供别名保护并不是我所称的“推荐”。清除脚本顶部的别名或rm通过完整路径调用就足够了。
Sorpigal'4

Answers:



5

通常最好的做法是为rm投入一些保护措施,这通常是通过混淆来实现的。在多用户环境中,您经常会看到许多此类保护措施。

对于Shell脚本编写从业人员来说,禁用这些保护措施通常很有用,因为他们大概知道他们在做什么。如前所述,这是通过在命令前面加上来实现的\

与@Sorpigal的建议相反,我绝对建议不要取消别名,以免脚本无法为用户提供保护。此外,使用完整路径也是不明智的,因为rm由于某种原因(例如GNU rm与BSD rm)可能位于辅助路径中。用严格的路径覆盖它会破坏拥有PATH的目的,即扩展和处理许多体系结构,环境和用户。


3
尽管很常见,但混叠rm并不是一个好习惯,但是却是一个糟糕而不幸的做法。
jlliagre 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.