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

bash脚本中. <(命令)写法的含义是什么?是否有专有名称?

Bash 语法解答

语法本质说明

你观察到的. <并不是一套完整的固定语法,是两个独立的 Bash 特性组合后产生的视觉效果,二者之间有空格分隔,分别是:

  • 点命令 .:是内置命令 source 的简写,作用是在当前 shell 进程中读取并执行指定文件的所有代码,不会启动子进程运行,因此文件内定义的变量、函数、别名都会在当前 shell 环境中直接生效。
  • 进程替换 <(命令):这是 Bash、Zsh、Ksh 等支持的非 POSIX 标准特性,专门名称就是进程替换。作用是将括号内命令的标准输出内容,映射为一个临时的可读取文件描述符(可以近似理解为系统生成的一个临时只读文件),可以直接作为需要接收文件路径作为参数的命令的输入。

这段代码的运行逻辑

你贴的函数实际执行流程如下:

  1. 调用 obj 函数时传入第一个参数(比如执行 obj User,那么 $1 的值就是 User)
  2. 首先运行 sed "s/obj/$1/g" obj.class:将 obj.class 文件中所有的 obj 字符串替换为传入的参数值
  3. 进程替换 <(sed ...) 会把 sed 输出的替换后的内容,包装成一个临时文件路径
  4. 点命令 . 读取这个临时文件的内容,在当前 shell 中直接执行,相当于动态生成了对应名称的类相关函数/变量,实现面向对象的模拟效果

补充注意点

  • 进程替换不属于 POSIX shell 标准语法,在纯 sh 环境下运行会报错,需要显式用 Bash 执行脚本
  • 语法书写时要求严格:点命令和后续的路径/进程替换语法之间必须有空格,< 和 ( 之间不能有空格,否则会触发语法错误

内容的提问来源于stack exchange,提问作者Itération 122442

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 10:57:00