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

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

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

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

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 $& дает.

  • Выберите строки из текстового файла с идентификаторами, указанными в другом файле
  • Существует ли эффективное решение для ошибки i965, влияющей на libEGL?
  • Как получить pid процесса и вызвать kill -9 на нем в сценарии оболочки?
  • Чтобы получить журналы между конкретными штампами времени, используя сценарий оболочки
  • Почему этот фрагмент оболочки проверяет, были ли хосты запущены с отключением netcat преждевременно?
  • В терминале я могу выполнять поиск до конца журнала быстрее, чем данные попадают туда
  • Файл больше не доступен при попытке редактировать в vim через <()
  • sed диапазоны не всегда могут соответствовать только одной строке
  • Команда bash multi line с комментариями после символа продолжения
  • Объектно-ориентированная оболочка Unix с возможностями LINQ?
  • Shell script - синтаксическая ошибка возле неожиданного токена `['
  • Что делает оператор «#» перед переменной в расширении переменной?
  • Linux и Unix - лучшая ОС в мире.