![파일에서 입력을 얻기 위해 diff 매개변수를 사용하여 스크립트를 병렬로 실행하려면 어떻게 해야 합니까?](https://linux55.com/image/178355/%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EC%9E%85%EB%A0%A5%EC%9D%84%20%EC%96%BB%EA%B8%B0%20%EC%9C%84%ED%95%B4%20diff%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EB%B3%91%EB%A0%AC%EB%A1%9C%20%EC%8B%A4%ED%96%89%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
abc.txt
Linux 시스템에 다음과 같은 파일이 있습니다.
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