bash에서 $&의 사용법은 무엇입니까?

bash에서 $&의 사용법은 무엇입니까?

저는 Bash에서 특수 매개변수를 다루는 작업을 하고 있습니다. 그것이 무엇인지 $&, 와 어떻게 다른지 알고 싶습니다 $_.

명령을 실행할 때 다음 출력이 표시되지만 그 의미도 찾을 수 없습니다.

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

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

답변1

$&단일 태그/특수 변수가 아니라 단지 $합계 입니다 &.

명령은 이와 같이 처리되며 echo $&백그라운드에서 echo $ &텍스트를 에코합니다 .$

$_반면에 가장 최근에 실행된 명령의 마지막 인수로 확장되는 특수 변수가 있습니다.

답변2

이 측면이 다루어졌지만 귀하의 질문에 따르면 귀하 bash의 코드에서 이러한 변수가 이미 발생했다고 생각됩니다.perl

$&$_는 의 특수 변수입니다 perl. 특히 perl쉘 코드에서 호출된 코드 에 나타납니다 .

$_많은 함수와 연산자에 의해 처리되는 기본 변수입니다 perl. 이 변수는 입력 연산자가 설정한 기본 변수이기도 합니다.

존재하다:

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

some-code는 some-input의 각 라인에서 실행되고, 해당 라인은 저장되며, $_some-code가 실행된 후에 인쇄되는 내용이 표시됩니다.$_

연산자는 기본적으로 작동합니다 s/regex/replacement/. $_그래서 종종 다음과 같은 것을 발견하게 될 것입니다:

perl -pe 's/foo/bar/'

이는 다음의 약어입니다.

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

(위, $_, ~에껍데기중요한 것은 perl쉘 변수가 아니라 인터프리터에 전달된 리터럴 인수의 일부입니다. 리터럴 인수는 표현식 perl( )으로 -e전달되므로 변수로 해석됩니다.perlperl

$&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

답변3

제공한다는 &것은 백엔드에서 또는 작업으로 특정 명령을 실행한다는 의미입니다. 이것이 echo $&출력이 제공하는 것입니다.

관련 정보