$(command)&做什么?


10

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

 >$(command) &

我知道&结尾处的&符号会使命令在后台运行,但是我从未见过将它与美元符号以及该命令周围的括号结合使用。

它有什么作用?


我知道的用法$( ),但没有休息。只是$(command) &,这就是令我困惑的地方。
AlphaOmega

Answers:


20

简短答案

给定语法$(command) &,结果与您获得Just的输出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)

&符&-后台过程

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


2

它将“命令”的输出作为命令并在后台运行。其功能与“评估”相当


它是终端窗口中存在的符号,您可能不需要输入,具体取决于您要执行的操作。当您打开终端时,您会立即在那看到它。
monkeyman_stones

我不明白 虽然简短,但可以回答实际问题,而不能接受实际答案。
mveroone
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.