쉘: bash/sh에서 세미콜론과 & 기호 결합

쉘: bash/sh에서 세미콜론과 & 기호 결합
[root@localhost tmppcm]# ls ; 에코 종료 코드: $? & 에코 pid: $!
테스트.txt
..
....
...
최종파일.txt
[1]1265
프로세스 번호는 1265입니다.
종료 코드는 0입니다.

위에서는 실행이 시작된 ls다음 "병렬로" 실행되는 echo로 끝납니다.

정확히 내가 원했던 것은 아닙니다. 시퀀스 합계를 백그라운드에서 실행하고 "병렬" 방식으로 프로세스 ID를 에코하기를 ls원합니다 .echo exit code was: $?

해결책은 다음 ||대신에 ;사이를 사용하는 것일 수 있습니다 .lsecho exit code was

[root@localhost tmppcm]# ls || 에코 종료 코드: $? & 에코 pid: $!
[1]1271
프로세스 번호는 1271입니다.
테스트.txt
..
....
...
최종파일.txt
종료 코드는 0입니다.

A ; B & C제가 놓친 조합을 사용하여 이 작업을 수행 하는 더 현명한 방법이 있나요 ?

답변1

이 경우 사용하고 싶습니다.명령 그룹. 특정 프로그램이 백그라운드에서 실행되기를 원하므로 해당 프로그램이 ()자체 하위 쉘을 갖도록 다양한 프로그램을 사용할 것입니다. 괄호를 사용하여 명령을 그룹화한 다음 다음과 같이 그룹(및 하위 쉘)을 백그라운드에 배치할 수 있습니다.

( A; B ) & C

또는 이 구체적인 예에서는 다음과 같습니다.

(ls ; echo exit code was: $?) & echo pid is: $!

관련 정보