【问题标题】:What does this notation mean in bash?这个符号在 bash 中是什么意思?
【发布时间】:2021-09-17 18:05:35
【问题描述】:

我很确定这将是重复的,因为我有时在其他地方看到过它,但我不记得在哪里,而且我(显然)也不知道它是如何被调用的。

在另一个 SO 帖子中,有这段代码(bash):

obj(){
    . <(sed "s/obj/$1/g" obj.class)
}

. &lt; 是做什么的?如果它有名字,它是什么?

【问题讨论】:

  • 两个不同的东西。 &lt;() 是进程替换,其中命令的输出连接到一个文件,该文件通常是另一个命令的参数。句点是source 的别名。它们都在 bash 手册中有更多解释。
  • 它获取文件obj.class,并用您传递给此函数的参数替换该文件中出现的每个obj。然后它 sources 将结果放入您当前的 shell。
  • 另外请注意,如果您仍然停留在 bash 3 上,这将不起作用。见stackoverflow.com/q/32596123/9952196

标签: bash process-substitution dot-source


【解决方案1】:

来源. [Docs]

从当前 shell 上下文中的文件名参数读取并执行命令。

source 是 bash 中点/句点 . 的同义词,但不是 POSIX sh,因此为了最大程度地兼容,请使用句点。


进程替换&lt; () [Docs]

进程替换允许使用文件名来引用进程的输入或输出。

【讨论】:

    【解决方案2】:

    在终端中输入:

    help .
    

    函数obj 接受一个参数。它执行sed 并用参数替换文件obj.class 中所有出现的obj。结果用作 Bash 代码并由正在运行的 Bash 实例进行评估。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 2015-02-18
      • 2017-02-04
      • 2010-12-30
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多