저는 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
전달되므로 변수로 해석됩니다.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
답변3
제공한다는 &
것은 백엔드에서 또는 작업으로 특정 명령을 실행한다는 의미입니다. 이것이 echo $&
출력이 제공하는 것입니다.