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 有一个值得该死的标准库,那么这些废话首先是必要的。)
我正在尝试在 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 有一个值得该死的标准库,那么这些废话首先是必要的。)