我正在研究 bash 中的特殊参数。我很想知道什么是$&
以及它与$_
.
运行命令时我看到以下输出,但也找不到含义。
k@Linux:~$ echo $&
[1] 12397
$
k@Linux:~$ echo $n
[1]+ Done echo $
k@Linux:~$
Run Code Online (Sandbox Code Playgroud)
Mat*_*Mat 18
$&
不是单个标记/特殊变量,它只是$
and &
。
该命令echo $&
被视为echo $ &
,它$
在后台回显文字。
$_
另一方面是一个特殊变量,它扩展到最近执行的命令的最后一个参数。
虽然bash
已经涵盖了方面,但您的问题让我觉得您已经在perl
代码中遇到了这些变量。
$&
并且$_
是 中的特殊变量perl
。并且它们尤其出现在perl
从 shell 代码调用的代码中。
$_
是许多perl
函数和运算符使用的默认变量。该变量也是输入运算符设置的默认变量。
在:
perl -pe 'some-code' < some-input
Run Code Online (Sandbox Code Playgroud)
some-code 为 some-input 的每一行运行,该行存储在 中$_
,并且$_
在 some-code 运行后打印的内容。
该s/regex/replacement/
运营商工作在$_
默认情况下。所以你经常会发现这样的事情:
perl -pe 's/foo/bar/'
Run Code Online (Sandbox Code Playgroud)
简称:
perl -pe '$_ =~ s/foo/bar/'
Run Code Online (Sandbox Code Playgroud)
(以上,$_
就shell而言,它只是传递给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
Run Code Online (Sandbox Code Playgroud)
或者:
$ echo foo bar | perl -pe 's/[aeiou]+/<$&>/g'
f<oo> b<a>r
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4524 次 |
最近记录: |