bash 中 $& 的用法是什么?

bash 中 $& 的用法是什么?

我正在研究 bash 中的特殊参数。我很想知道什么是$&以及它与 有何不同$_

运行命令时我看到以下输出,但也无法找到其含义。

k@Linux:~$ echo $&
[1] 12397
$
k@Linux:~$ echo $n

[1]+  Done                    echo $
k@Linux:~$ 

答案1

$&不是单个标记/特殊变量,它只是$&

该命令echo $&被视为,它在后台echo $ &回显文字。$

$_另一方面是一个特殊变量,它扩展到最近执行的命令的最后一个参数。

答案2

虽然已经涵盖了这个方面,但你的问题让我认为你已经在代码bash中遇到了这些变量。perl

$&$_是 中的特殊变量perl。它们尤其出现在perl从 shell 代码调用的代码中。

$_是许多函数和运算符处理的默认变量perl。该变量也是输入运算符设置的默认变量。

在:

perl -pe 'some-code' < some-input

some-code 对 some-input 的每一行运行,该行存储在 中,并且在 some-code 运行后打印 的$_内容。$_

运算符默认s/regex/replacement/工作。$_所以你经常会发现这样的事情:

perl -pe 's/foo/bar/'

这是以下的缩写:

perl -pe '$_ =~ s/foo/bar/'

(以上,$_,至所关心的只是传递给perl解释器的逐字参数的一部分,它不是 shell 变量。该逐字参数作为perl表达式 ( -e)传递给perl,因此perl它被解释为变量)。

$&是另一个特殊变量,它扩展到最后一个匹配运算符 ( , ...)perl所匹配的内容。m/.../s/.../.../

例如:

$ echo foo | perl -lne '
    print "The last character in $_ is $&" if m/.$/'
The last character in foo is o

或者:

$ echo foo bar | perl -pe 's/[aeiou]+/<$&>/g'
f<oo> b<a>r

答案3

提供&意味着您将在后端或作为作业运行特定命令。这就是 的输出echo $&给出的结果。

相关内容