gpt4 book ai didi

macos - 如何在 AppleScript 中转义 shell 参数?

转载 作者:行者123 更新时间:2023-12-04 16:29:49 27 4
gpt4 key购买 nike

Applescript 似乎没有正确转义字符串。我究竟做错了什么?

例子:

set abc to "funky-!@#'#\"chars"
display dialog abc
display dialog quoted form of abc

预期/期望输出:
funky-!@#'#"chars
'funky-!@#\'#"chars'

实际输出:
funky-!@#'#"chars
'funky-!@#'\''#"chars'

如您所见,在实际输出中,Applescript 似乎添加并转义了一个额外的 '
如果结尾字符是 ',我就可以了或 "而且我也可以对单引号和双引号进行转义 - 但似乎只有单引号实际上被转义了。

最佳答案

反斜杠通常不在 shell 中的单引号内解释。

Enclosing characters in single quotation marks preserves the literal value of each character within the single quotation marks. A single quotation mark cannot occur within single quotation marks.

A backslash cannot be used to escape a single quotation mark in a string that is set in single quotation marks. An embedded quotation mark can be created by writing, for example: 'a'\''b', which yields a'b.



然而,它们由 sh 中的 echo 解释,sh 是 do shell script 使用的 shell。 :
do shell script "echo " & quoted form of "\\t" --> "\t"

取消设置 xpg_echo使其表现得像 bash 中的 echo:
do shell script "shopt -u xpg_echo; echo " & quoted form of "\\t" --> "\\t"

通常使用 HEREDOC 重定向更简单:
do shell script "rev <<< " & quoted form of "a\\tb" --> "b\\ta"

关于macos - 如何在 AppleScript 中转义 shell 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138167/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com