"wait &"("wait &sand")는 유용한 (bash) 쉘/쉘 스크립팅 관용구 또는 기술입니까?

"wait &"("wait &sand")는 유용한 (bash) 쉘/쉘 스크립팅 관용구 또는 기술입니까?

나는 GNU "bash" 쉘을 실행하는 Linux 시스템의 일부 쉘 스크립트를 "상속"했습니다. 특별한 경우에는 머신이 GNU bash 버전 2.0.5b를 실행하고 있었습니다.

이 스크립트 중 하나에는 wait &"for line" 루프의 일부로 ("wait &sand") 지시문이 있습니다 for. 언뜻 보기에 이것은 호기심이 많고 흥미로운 관용구처럼 보이지만 웹에서 검색해 본 결과 관련된 어떤 것도 반환되지 않았습니다. man wait다음 설명과 함께 "BASH_BUILTINS"("BASH BUILTINS COMMAND") 맨페이지를 표시합니다.

wait [n]  
  Wait for the specified process and return its termination status.
  n may be a process ID or a job spec­ification;  if  a  job spec is given,
  all processes in that job's pipeline are waited for.  If n is not
  given, all currently active child processes are waited for, and the 
  return status is zero. If n speci­fies a non-existent process or job, 
  the return status is 127.  Otherwise, the return status is the exit 
  status of the last process or job waited for.

매뉴얼 페이지의 이 부분을 읽어보면 wait &"백그라운드에서 자동으로"현재 활성화된 모든 하위 프로세스를 기다리고 상태 0을 반환합니다.”. 내 해석이 정확합니까? 이것은 일반적이고 유용한 관용구입니까?

컨텍스트를 추가하기 위해 스크립트에서 다음 사용법을 논의합니다.

for file in `ls *.txt ; wait &`
do
   ...
   [cp instructions]
   ...
   [mv instructions]
   ...
   [mailx instruction]
done

답변1

나는 이 코드를 작성하는 이유를 상상할 수 없으며, 이 코드를 작성한 사람이 무엇을 달성하려고 했는지도 잘 모르겠습니다. wait여기서는 아무것도 수행되지 않습니다. 관점에서 볼 때하위 프로세스가 없으므로 즉시 종료되고 기본적으로 noop 역할을 합니다( wait명령 대체로 인해 자체적으로 하위 프로세스에서 실행되지만 관련이 없습니다).

서술자로서,ls의 출력을 구문 분석하는 것은 매우 취약합니다.. 대신 다음을 수행해 보세요.

for file in *.txt; do
    ...
done

관련 정보