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

Zsh中如何将=()进程替换传递给curl命令?

解决zsh中curl使用=(...)进程替换的问题

在zsh里直接写@=(...)会触发解析歧义——因为@=是zsh参数扩展的特殊语法(比如用于拆分字符串为数组的${(@)=var}),shell会错误解析你的命令。要正确使用=(...)进程替换,需要用引号把进程替换部分包裹起来,或者用括号明确分隔,让zsh优先处理进程替换:

正确写法示例

方法1:用双引号包裹进程替换

curl -XPOST example.com/{foo,bar} -F file="@=(<<<data)"

方法2:用括号明确分隔(适合更复杂的命令)

curl -XPOST example.com/{foo,bar} -F file=@"(<<<data)"

用print命令的正确写法

如果用print输出内容,同样需要包裹:

curl -XPOST example.com/{foo,bar} -F file="@=(print data)"

原理说明

=(...)会生成一个包含命令输出的临时文件,返回这个临时文件的路径。用引号包裹后,zsh会先完成进程替换得到临时文件路径,再把@/path/to/tmpfile传给curl,避免了@=被误解析为参数扩展语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:52:03