나는 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 $&
.