Каково использование $ & in bash?

Я изучал специальные параметры в bash. Мне любопытно узнать, что такое $& и как оно отличается от $_ .

Я вижу следующий вывод при запуске команд, но не смог найти значение.

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

  • Почему источник дает ошибку "невозможно выполнить двоичный файл"
  • Является ли вилка оболочки, когда я использую встроенные команды?
  • Как сделать косвенную переменную
  • ksh, выполнить действие при достижении максимального значения цикла
  • Создайте нового пользователя без подсказки с chpasswd
  • Заменить часть имени файла по имени каталога
  • Как выполнить несколько команд с помощью nohup
  • Я переместил новую программу в папку bin, но ничего не происходит, когда я пытаюсь запустить ее
  • 3 Solutions collect form web for “Каково использование $ & in bash?”

    $& is not a single token / special variable, это просто $ и & .

    Команда echo $& обрабатывается как echo $ & , которая возвращает букву $ в фоновом режиме.

    $_ другой стороны, $_ – это специальная переменная, которая расширяется до последнего аргумента последней выполненной команды.

    Хотя аспект bash был покрыт, ваш вопрос заставляет меня думать, что вы столкнулись с этими переменными в perl коде.

    $& and $_ – специальные переменные в perl . И они особенно встречаются в коде perl вызываемом из кода оболочки.

    $_ – это переменная по умолчанию, в которой многие функции perl и операторы работают. Эта переменная также является переменной по умолчанию, заданной операторами ввода.

    В:

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

    Некоторый код запускается для каждой строки некоторого ввода, строка, хранящаяся в $_ , а содержимое $_ печатается после запуска некоторого кода.

    Оператор s/regex/replacement/ работает по умолчанию $_ . Поэтому вы часто находите такие вещи, как:

     perl -pe 's/foo/bar/' 

    Короткая для:

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

    (выше, $_ , что касается оболочки , является лишь частью аргумента verbatim, переданного интерпретатору perl , это не переменная оболочки. Этот дословный аргумент передается как выражение perl ( -e ) в perl , и это для perl что он интерпретируется как переменная).

    $& – другая специальная переменная perl которая расширяется до того, что соответствовало последнему оператору сопоставления ( m/.../ , s/.../.../ …).

    Например:

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

    Или:

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

    Предоставление & означает, что вы собираетесь запускать определенную команду в бэкэнд или в качестве задания. Так вот что выводит echo $& дает.

    Interesting Posts

    Как использовать команду SED для удаления введенного кода из нескольких файлов?

    Восстановить образ файловой системы из vmlinux.bin (встроенные initramfs) без перестройки?

    Как проверить, установлен ли раздел как «noexec»?

    Ошибка разрешения сценария резервного копирования

    undefined symbol: _ZN5boost15program_options11to_internalERKSs

    Выгрузить модуль невосприимчивого ядра

    Использование переименования в терминале для удаления непринятых символов Windows

    bash while / read loop ведет себя по-разному в виртуальной машине на основе mips / musl / busybox

    while-loop, похоже, не помнит обновление переменной – не задействован трубопровод

    Как добавить свой собственный созданный центр сертификации в системные доверенные репозитории

    Добавлен SLI, startx дает пустой экран

    Какая лучшая книга должна читать каждый пользователь Unix или Linux?

    В чем цель использования разных crontab для каждого пользователя?

    Перезапустить сетевой интерфейс – Angstrom linux

    Запуск двоичных файлов X86 на armv7

    Linux и Unix - лучшая ОС в мире.