$ & İn bash kullanımı nedir?


10

Bash'da özel parametrelere bakıyordum. Ne olduğunu $&ve nasıl farklı olduğunu bilmek merak ediyorum $_.

Komutları çalıştırırken aşağıdaki çıktıyı görüyorum ama anlamını da bulamadım.

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

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

Yanıtlar:


18

$&tek bir belirteç / özel değişken değil, basitçe $ve &.

Komut echo $&, arka planda echo $ &bir değişmezi yansıtan olarak kabul edilir $.

$_ Öte yandan, en son yürütülen komutun son argümanına genişleyen özel bir değişkendir.


5

Unsur bashele alınırken, sorunuz bana perlkoddaki bu değişkenlerle karşılaştığınızı düşündürüyor .

$&ve $_içindeki özel değişkenlerdir perl. Ve özellikle perlkabuk kodundan çağrılan kodda bulunurlar .

$_birçok perlişlevin ve işleçlerin üzerinde çalıştığı varsayılan değişkendir . Bu değişken aynı zamanda giriş işleçleri tarafından ayarlanan varsayılan değişkendir.

İçinde:

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

Bazı kodlar, bazı girdilerin her satırı için, satır depolanmış olarak çalıştırılır $_ve içeriği, $_bazı kodlar çalıştıktan sonra yazdırılır.

s/regex/replacement/Operatör üzerinde çalıştığı $_varsayılan olarak. Yani sık sık şöyle şeyler bulursunuz:

perl -pe 's/foo/bar/'

Şunlar için kısadır:

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

(yukarıda, $_kadarıyla kabuk söz konusu geçirilen bir kelimesi kelimesine tartışmanın sadece bir parçasıdır perltercüman bir kabuk değişkeni, o değil. O kelimesi kelimesine argüman olarak geçirilen perl(ifade -eetmek) perl, ne için var perlo a olarak yorumlanır olduğunu değişken).

$&perlson eşleşen işleçle eşleşen her şeye genişleyen başka bir özel değişkendir ( m/.../, s/.../.../...).

Örneğin:

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

Veya:

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

1

Sağlamak &, arka uçta veya iş olarak belirli bir komutu çalıştıracağınız anlamına gelir. Yani çıktısı budur echo $&.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.