bash에서 $ &의 사용법은 무엇입니까? 때 다음 출력이 표시되지만 의미를 찾을 수

나는 bash에서 특별한 매개 변수를 조사했다. 나는 무엇 $&이고 어떻게 다른지 궁금합니다 $_.

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

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

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


답변

$&단일 토큰 / 특수 변수가 아니라 간단 $하고 &입니다.

명령 echo $&은로 처리되어 백그라운드에서 echo $ &리터럴을 에코합니다 $.

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


답변

그동안 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

답변

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