简短答案

简短答案

我在 Bash 脚本中看到以下语法:

 >$(command) &

我知道&末尾的“&”符号会使命令在后台运行,但我从未见过它与美元符号和命令周围的括号结合在一起。

它有什么作用?

答案1

简短答案

给定语法,结果与你获取运行 just 的输出然后尝试运行的$(command) &结果相同command作为命令。所有这些都将在后台完成,这意味着终端上不会有任何可见的输出或挂起。

例如,如果我们有一个名为mycommand.txt以下内​​容的文本文件:

echo "Hello World"

然后命令

$(cat mycommand.txt) &

相当于运行

echo "Hello World" &

但是由于我们添加了与号 ( &),我们将看不到该命令的任何输出,因此它在这个例子中几乎毫无用处。


长答案(解释)

美元符号$(变量)

括号中事物前的美元符号通常指的是变量。这意味着此命令要么从 bash 脚本向该变量传递参数,要么获取该变量的值。bash 脚本中调用和声明变量的区别如下:

声明变量没有美元符号并称之为美元符号。例如,包含以下内容的脚本

#!/bin/bash
STR="Hello World!"
echo $STR

将输出此

Hello World!

括号()- 命令替换

命令替换允许命令的输出替换命令本身。当命令以下列方式括起来时,就会发生命令替换:

$(command)

或者

`command`

Bash 通过在子 shell 环境中执行命令并将命令替换为命令的标准输出(删除所有尾随换行符)来执行扩展。嵌入的换行符不会被删除,但可以在分词期间删除。命令替换$(cat file)可以用等效但更快的 来替换$(< file)

Ampersand &- 后台进程

然后,正如您所说,& 符号或&符号用于在后台运行它。

答案2

它将 的输出command作为命令并在后台运行,其功能与 相当eval

相关内容