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

解析/bin/bash -c "$(curl ...)"命令中$与括号的语法作用

关于Homebrew安装命令的两个核心疑问解答

一、$(...)结构的具体用途

$(...)是bash中的命令替换语法,核心作用是:先执行括号内部的命令,将该命令输出的内容,直接替换掉整个$(...)所在的位置。

以Homebrew的安装命令为例:
括号内的curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh,作用是从指定URL下载Homebrew安装脚本的文本内容,并将内容输出到终端。而$(...)会抓取这个输出的文本,把它填充到bash -c ""的引号中,相当于让bash直接执行刚下载到的脚本代码,省去了先把脚本保存为本地文件再运行的步骤。

二、bash -c手册说明的通俗解释

手册原文‘如果存在-c选项,则从字符串读取命令。如果字符串后有参数,它们将被分配给位置参数,从$0开始。’可以拆解成两层意思:

  • 第一层:当使用bash -c "xxx"时,bash不会进入交互模式等待输入,而是直接把引号包裹的xxx当作要执行的命令/脚本代码来运行,这和你理解的“把xxx当作终端输入的命令执行”是一致的。
  • 第二层:如果bash -c "xxx"后面还跟着额外内容,比如执行bash -c "echo $0 $1" test arg1,那么这些后续内容会被分配给脚本内的位置参数变量:
    • $0会被设置为test(注意这里$0不是第一个传入的参数,而是用来模拟脚本名称的占位符)
    • $1会被设置为arg1
    • 后续更多参数会依次对应$2、$3等变量

回到Homebrew的安装命令,因为bash -c后面没有额外参数,所以这部分特性暂时用不到,但在编写复杂的脚本调用时,这个参数分配规则会很有用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 15:02:16