tr(anslate)在这里发生了什么?

时间:2009-10-28 02:18:44

标签: shell escaping applescript

在AppleScript中,如果我这样做:

do shell script "echo \"G:\\CRE\\MV Studios\\Exhibition Projects\"|tr \"\\\\\" \"/\""

我希望我的所有反斜杠都会以正斜杠的形式返回。为了使它更容易理解,tr命令看起来像没有所有的转义

tr "\\" "/" #there's still an escaped \ for the shell

但我得到的是:

"G:/CRE/MV Studiosxhibition Projects"

请注意,当我从脚本编辑器中复制它时,它添加了一个奇怪的字符,其中缺少/ E应该是,它不会显示在事件日志中或者我发布它之后。显然它正在用\ E做一些奇怪的事。

关于如何应对的任何想法?

1 个答案:

答案 0 :(得分:5)

似乎echo\E解释为转义字符(ASCII代码27,ESC)。您可以使用echo -E选项禁用此功能,以禁用转义序列的解释。

从Mac上的 help echo

  

echo: echo [-neE] [arg ...]
      输出ARG。如果指定了-n,则尾随换行符为       抑制。如果给出-e选项,则解释       以下反斜杠转义字符已启用:

    \a      alert (bell)
    \b      backspace
    \c      suppress trailing newline
    \E      escape character
    \f      form feed
    \n      new line
    \r      carriage return
    \t      horizontal tab
    \v      vertical tab
    \\      backslash
    \0nnn   the character whose ASCII code is NNN (octal).  NNN can be
            0 to 3 octal digits
     

您可以明确地关闭上述字符的解释       使用-E选项。

相关问题