AppleScript 在字符串中的花括号上抛出错误

AppleScript throwing errors on curly braces in string

我正在尝试在 AppleScript 中生成 shell 脚本。使用以下模式时:

set tDur to "PT1H21M7S"
set tSh to "echo '" & tDur & "' | egrep -o '[0-9]+M' | sed s/M// | sed -e :a -e s/^.\{1,1\}$/0&/;ta"

...我收到错误:

Expected “"” but found unknown token.

报错后光标落在了第一个花括号上,我可以再次对花括号进行转义,例如:

\{1,1\}

...但是两个转义字符都出现在我的 shell 脚本中,这很糟糕。

如果我删除最后的 sed 语句:

set tSh to "echo '" & tDur & "' | egrep -o '[0-9]+H' | sed s/H//"

... AppleScript 将接受该字符串。我尝试了 AppleScript quoted form of 属性 的各种配置(根据 Apple 的 documentation),但无济于事。

编辑:工作 shell 命令我正在尝试让 AppleScript 生成:

echo 'PT1H2M21S' | egrep -o '[0-9]+M' | sed s/M// | sed -e :a -e 's/^.\{1,1\}$/0&/;ta'

编辑:为了清楚起见,还添加了 tDur 变量的设置。

感谢任何帮助!

set tSh to "echo " & (quoted form of tDur) & " | egrep -o '[0-9]+H' | sed s/H//"

如果您使用的是 10.10,请考虑通过 AppleScriptObjC 桥使用 NSTask。与 do shell script 不同,它允许您通过 STDIN 传递数据,这是执行这些操作的正确方法。 (尽管坦率地说 none 如果 AppleScript 有一个值得该死的标准库,那么这些废话首先是必要的。)