Яке використання $ & in 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

Деякий код виконується для кожного рядка деякого вводу, при цьому рядок зберігається в $_ , а вміст цього $_друкується після запуску деякого коду.

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

1

Забезпечення &означає, що ви збираєтеся виконати певну команду в бекенде або як завдання. Тож саме це echo $&дає результат.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.