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

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

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

  • Есть ли у bash встроенная команда кэширования (вроде как mktemp или sponge)?
  • Почему переменные bash исчезают, когда я использую xargs?
  • rsync добавляет дополнительный каталог в команду
  • Что произойдет, если вы отредактируете скрипт во время выполнения?
  • Как подсчитать строки, упорядоченные по первому полю в bash
  • Команда bash setenv не найдена
  •  k@Linux:~$ echo $& [1] 12397 $ k@Linux:~$ echo $n [1]+ Done echo $ k@Linux:~$ 

  • Добавить команду «закончена» после использования определенной команды
  • Как работают $ {0 ## *} и $ {0% / *}?
  • Как явным образом установить tabname нового терминала gnome?
  • Как определить, является ли вход из аргумента, файла или терминала
  • Как узнать, какую платформу я использую в lubuntu, ubuntu или kubuntu
  • Разбор символа строки с bash
  • 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 $& дает.

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