这里的 tr(anslate) 是怎么回事?

发布于 2024-08-10 00:12:59 字数 476 浏览 4 评论 0原文

在 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 做了一些奇怪的事情。

关于如何处理它有什么想法吗?

In applescript, if I do:

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

I'd expect all my backslashes to come back as forward slashes. To make it slightly easier to understand, the tr command would look like this without all the escapes

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

But what I get is:

"G:/CRE/MV Studiosxhibition Projects"

Note that when I copied that from Script Editor it added a weird character where the missing /E should be, it doesn't show up in the event log or once I've posted this. Obviously it's doing something weird with \E.

Any ideas on what to do about it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

静水深流 2024-08-17 00:12:59

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

来自我的 Mac 上的 help echo

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

 \警报(响铃)
    \b 退格键
    \c 抑制尾随换行符
    \E 转义字符
    \f 换页
    \n 新行
    \r 回车
    \t 水平制表符
    \v 垂直制表符
    \\ 反斜杠
    \0nnn ASCII 代码为 NNN(八进制)的字符。 NNN 可以是
            0 到 3 个八进制数字

您可以显式关闭对上述字符的解释
使用 -E 选项。

It appears that echo is interpreting \E as an escape character (ASCII code 27, ESC). You can disable this with the echo -E option to disable interpretation of escape sequences.

From help echo on my Mac:

echo: echo [-neE] [arg ...]
Output the ARGs. If -n is specified, the trailing newline is
suppressed. If the -e option is given, interpretation of the
following backslash-escaped characters is turned on:

    \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

You can explicitly turn off the interpretation of the above characters
with the -E option.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文