파일에서 입력을 얻기 위해 diff 매개변수를 사용하여 스크립트를 병렬로 실행하려면 어떻게 해야 합니까?

파일에서 입력을 얻기 위해 diff 매개변수를 사용하여 스크립트를 병렬로 실행하려면 어떻게 해야 합니까?

abc.txtLinux 시스템에 다음과 같은 파일이 있습니다.

abc|yes|50c|1|pending
bcd|no|100c|2|pending
cde|yes|45c|3|pending
def|no|44c|3|pending

세 번째 필드를 매개변수로 호출하고 script1.ksh모든 스크립트를 병렬로 실행해야 하며 스크립트가 실패하면 마지막 필드를 보류 중에서 실패/성공으로 업데이트해야 합니다.

while read 행을 사용하여 파일의 세 번째 필드를 "var1" 변수로 추출하고 스크립트를 실행하고 다섯 번째 필드를 보류에서 성공/실패로 업데이트했습니다. 그러나 모든 스크립트는 병렬이 아닌 직렬로 실행됩니다.

ksh script1.ksh 50c    
ksh script1.ksh 100c    
ksh script1.ksh 45c    
ksh script1.ksh 44c 

답변1

백그라운드에서 스크립트를 실행하면 됩니다.

while IFS='|' read -r  name yno arg rest; do 
    ksh script1.ksh "$arg" && 
    status=SUCCESS || status=FAILED &&
    sed -i "/^$name|/{s/pending/$status/}" file &
done < file

관련 정보