You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AppleScript中curl命令多引号转义失败问题求助

解决AppleScript中curl命令变量引用的问题

你的问题核心有两个:一是多个do shell script是独立的shell会话,环境变量无法共享,二是错误地把AppleScript语法写进了shell字符串里,导致quoted form of output被当成字面量执行。下面一步步给你修正和解释:

先拆解原代码的问题

  1. 第一个do shell script ("export TRIAL_1=" & trial_1)完全无效——每个do shell script都会启动一个全新的shell进程,这个进程结束后,export的变量就消失了,下一个curl命令根本拿不到这个值。
  2. 你把quoted form of output直接写在curl的JSON字符串里,shell会把它当成普通文本,而不是AppleScript的变量处理逻辑,而且这里的output还是第一个命令的空返回值(export没有输出),完全不符合预期。

修正后的代码方案

方案1:安全处理特殊字符的写法(推荐)

这种写法会用AppleScript的quoted form of处理整个JSON参数,避免路径里的空格、引号等特殊字符导致shell解析错误:

set trial_1 to "/somepath"
-- 先在AppleScript层面拼接好完整的JSON字符串
set jsonPayload to "{\"desiredCapabilities\":{\"xcodeConfigFile\":\"" & trial_1 & "\"}}"
-- 把JSON参数用quoted form包裹后传给curl
set curlOutput to do shell script "curl -H 'Content-Type: application/json' -X POST -d " & quoted form of jsonPayload & " http://localhost:4723/wd/hub/session"

方案2:直接拼接字符串(适合无特殊字符的路径)

如果你的路径trial_1里没有空格、引号这类特殊字符,也可以直接把变量嵌入shell命令字符串:

set trial_1 to "/somepath"
set curlOutput to do shell script "curl -H 'Content-Type: application/json' -X POST -d '{\"desiredCapabilities\":{\"xcodeConfigFile\":\"" & trial_1 & "\"}}' http://localhost:4723/wd/hub/session"

关键知识点提醒

  • 所有do shell script都是独立的shell进程,不要试图用export传递变量,直接在AppleScript里拼接好完整命令再执行。
  • AppleScript的语法(比如quoted form of)要写在shell字符串外面,不能嵌套进shell的单/双引号里。
  • 当字符串里包含特殊字符时,一定要用quoted form of处理,避免shell把特殊字符当成命令解析。

内容的提问来源于stack exchange,提问作者drafts man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:25:21