$ (command) &는 무엇을합니까?


10

bash 스크립트에서 다음 구문을 보았습니다.

 >$(command) &

&끝에 앰퍼샌드 가 백그라운드에서 명령을 실행 한다는 것을 알고 있지만 명령 주위에 달러 기호와 대괄호를 결합하여 본 적이 없습니다.

무엇을합니까?


나는 그런 종류의 사용법을 알고 $( )있지만 휴식은 없습니다. 그것은 단지 $(command) &혼란 스럽습니다.
AlphaOmega

답변:


20

짧은 답변

구문이 주어지면 $(command) &결과는 방금 실행 결과를 가져 와서 명령 command으로 실행하려고 것과 같습니다. 그리고이 모든 것이 백그라운드에서 이루어 지므로 터미널에 가시적 인 출력이나 중단이 없음을 의미합니다.

예를 들어, mycommand.txt목차로 이름이 지정된 텍스트 파일이있는 경우 :

echo "Hello World"

그런 다음 명령

$(cat mycommand.txt) &

달리는 것과 같습니다

echo "Hello World" &

그러나 앰퍼샌드 ( &)를 추가 했으므로이 명령의 출력이 표시되지 않으므로이 예에서는 유용하지 않습니다.


긴 답변 (설명)

달러 기호 $(가변)

괄호 안에있는 항목 앞의 달러 기호는 일반적으로 변수를 나타냅니다. 이는이 명령이 bash 스크립트에서 해당 변수에 인수를 전달하거나 해당 변수의 값을 가져 오는 것을 의미합니다. 변수를 호출하고 선언하는 bash 스크립팅의 차이점은 다음과 같습니다.

변수를 선언 하지 않고 달러 기호 및 호출 달러 기호. 예를 들어, 이것을 포함하는 스크립트

#!/bin/bash
STR="Hello World!"
echo $STR

이것을 출력 할 것입니다

Hello World!

괄호 ()-명령 대체

명령 대체는 명령 출력이 명령 자체를 대체 할 수있게합니다. 명령이 다음과 같이 묶이면 명령 대체가 발생합니다.

$(command)

또는

`command`

Bash는 서브 쉘 환경에서 명령을 실행하고 명령 대체를 명령의 표준 출력으로 바꾸고 후행 줄 바꿈을 삭제하여 확장을 수행합니다. 포함 된 줄 바꿈은 삭제되지 않지만 단어 분리 중에 제거 될 수 있습니다. 명령 대체 $(cat file)는 동일하지만 더 빠른 것으로 대체 될 수 있습니다 $(< file).

앰퍼샌드 &-백그라운드 프로세스

그리고 앰퍼샌드 또는 &기호는 말했듯이 백그라운드에서 실행하는 데 사용됩니다.


2

"command"의 출력을 명령으로 받아서 백그라운드에서 실행합니다. 기능적으로 "eval"과 비교할 수 있습니다


터미널 창에 표시되는 기호는 입력하려는 항목에 따라 입력하지 않아도되는 기호입니다. 터미널을 열면 터미널이 즉시 나타납니다.
monkeyman_stones

이해가 안 돼요 비록 짧지 만, 실제 질문에 대한 대답이지만 대답은 그렇지 않습니다.
mveroone 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.