rah*_*hmu 23 ksh shell-script quoting
我刚刚打开了一个旧的 shell 脚本(在 Solaris 上用旧的 ksh88 编写),发现在整个代码中重复了以下内容:
[ -f $myfile ] && \rm -f $myfile
Run Code Online (Sandbox Code Playgroud)
转义的反斜杠让我觉得很奇怪。
我知道这是故意的,因为这种(显然无用的)转义在整个代码中都重复出现。原作者早就不在了,我联系不上他问他了。
这仅仅是作者的一个有趣的特质,还是某种在某个时间点有意义的已弃用的良好做法?或者也许实际上是推荐的做事方式而我完全错过了一些东西?
Ans*_*ann 25
这用于别名保护:
$ ls
.bashrc a b
$ alias ls
alias ls='ls $LS_OPTIONS'
$ \ls
a b
Run Code Online (Sandbox Code Playgroud)
小智 5
为 rm 设置一些保护措施通常是一种很好的做法,这通常是通过别名实现的。在多用户环境中,您经常会看到许多这样的保护措施到位。
对于 shell 脚本从业者来说,禁用这些保护措施通常很有用,因为他们大概知道自己在做什么。如前所述,这是通过在命令前加上\
.
与@Sorpigal 的建议相反,我绝对建议不要取消设置别名,以免脚本无法为用户提供保护措施。此外,使用完整路径也是不明智的,因为 rm 可能出于某种原因位于辅助路径中 - 即 GNU rm 与 BSD rm。用严格的路径覆盖它将违背拥有 PATH 的目的,即扩展和处理许多架构、环境和用户。