cwd*_*cwd 5 macos applescript arguments escaping
Applescript似乎没有正确地逃避字符串.我究竟做错了什么?
例:
set abc to "funky-!@#'#\"chars"
display dialog abc
display dialog quoted form of abc
Run Code Online (Sandbox Code Playgroud)
预期/期望的产出:
funky-!@#'#"chars
'funky-!@#\'#"chars'
Run Code Online (Sandbox Code Playgroud)
实际产量:
funky-!@#'#"chars
'funky-!@#'\''#"chars'
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,似乎在实际输出中Applescript正在添加和转义额外的内容 '
我将与结束字符的是其中有OK '或者",我也将是罚款与被转义两个单引号和双引号-但它似乎只有单引号实际上逃脱.
反斜杠通常不会在shell中的单引号内解释.
用单引号括起字符可保留单引号内每个字符的字面值.单引号内不能出现单引号.
反斜杠不能用于转义在单引号中设置的字符串中的单引号.可以通过写入来创建嵌入的引号,例如:'a'\''b',其产生'b'.
然而,它们是由shin中的echo解释的,它是由do shell script以下所用的shell :
do shell script "echo " & quoted form of "\\t" --> "\t"
Run Code Online (Sandbox Code Playgroud)
取消设置xpg_echo使其行为类似于bash中的echo:
do shell script "shopt -u xpg_echo; echo " & quoted form of "\\t" --> "\\t"
Run Code Online (Sandbox Code Playgroud)
通常,使用HEREDOC重定向更简单:
do shell script "rev <<< " & quoted form of "a\\tb" --> "b\\ta"
Run Code Online (Sandbox Code Playgroud)
使用"引用形式".通常在applescript中我们处理一个"mac"样式路径,所以我们会做这样的事情将它传递给shell ...
set theFile to choose file
set dirname to do shell script "dirname " & quoted form of POSIX path of theFile
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13186 次 |
| 最近记录: |