bashでの$&の使用法は何ですか?


10

私はbashの特別なパラメータを調べていました。何が$&どのように違うのか知りたいです$_

コマンドを実行すると次の出力が表示されますが、意味も見つかりませんでした。

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

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

回答:


18

$&は単一のトークン/特殊変数ではなく$、単にと&です。

コマンドecho $&はとして扱われecho $ &$バックグラウンドでリテラルをエコーします。

$_ 一方、実行された最新のコマンドの最後の引数に展開される特別な変数です。


5

一方でbash側面がカバーされている、あなたの質問は、私はあなたがこれらの変数間で来ていると思わせるperlコード。

$&およびの$_特殊変数ですperl。そして、それらは特にperlシェルコードから呼び出されたコードで見つかります。

$_多くの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インタプリタはシェル変数は、それがされていません。その逐語的な引数は、次のように渡されますperl(表現-eに)perl、そしてそれがためだperl、それはAと解釈されていること変数)。

$&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

1

提供&とは、バックエンドで、またはジョブとして特定のコマンドを実行することを意味します。つまり、それがの出力ですecho $&

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.