私はBashで特別なパラメータを扱う作業をしています。それが何なのか$&
、とどう違うのか知りたいです$_
。
コマンドを実行すると、次の出力が表示されますが、その意味も見つかりません。
k@Linux:~$ echo $&
[1] 12397
$
k@Linux:~$ echo $n
[1]+ Done echo $
k@Linux:~$
答え1
$&
単一のタグ/特殊変数ではなく、$
合計です&
。
コマンドはこのように処理され、echo $&
バックグラウンドでecho $ &
テキストをエコーします。$
$_
一方、最後に実行されたコマンドの最後の引数に拡張される特殊変数があります。
答え2
この側面が取り上げられていますが、あなたの質問によれば、あなた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
$&
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 $&
出力が提供するものです。