첫 번째 작업이 완료된 후 읽는 동안 다른 작업을 실행하세요.

첫 번째 작업이 완료된 후 읽는 동안 다른 작업을 실행하세요.

while read첫 번째 작업이 완료된 후 다른 입력 파일 + Python 스크립트를 사용하여 다른 작업을 실행하고 싶습니다 . 샘플 코드:

#!/bin/bash
while read -r line;
do
    python3 script.py -d $line --output test
done < domain.txt && 
mv *.txt savehere && 
dos2unix savehere/* && 
sort savehere/*.txt | uniq > done.txt

나는 이것을 할 수 있다는 것을 안다:

#!/bin/bash
while read -r line;
do
    python3 script.py -d $line --output test && 
    python3 script1337.py -d $line
done < domain.txt && 
mv *.txt savehere && 
dos2unix savehere/* && 
sort savehere/*.txt | uniq > done.txt

하지만 그것은 내가 원하는 것이 아닙니다. 다른 입력 파일을 사용해야 하고 작업이 완료 script1337.py되면 실행하고 싶습니다 (1개의 인수를 허용하기 때문에 작동하지 않습니다 ).script.pydomain.txt&&

답변1

무료 방법 도 있습니다 while:

xargs -L 1 -I '{}' python3 script.py -d \"'{}'\" --output test < domain.txt &&
xargs -L 1 -I '{}' python3 script1337.py -d \"'{}'\"           < scriptfile.txt &&
mv *.txt savehere && 
dos2unix savehere/* && 
sort savehere/*.txt | uniq > done.txt

원래더 적은xargs하지만 외부 유틸리티를 호출하기 때문에 효율적입니다 .

답변2

당신은

while read -r line; do 
    python3 script.py -d "$line" --output test
done < domain.txt \
  && mv *.txt savehere \
  && dos2unix savehere/* \
  && sort savehere/*.txt | uniq > done.txt

그룹화 중괄호를 사용하시겠습니까?

{
    while read -r line; do 
        python3 script.py -d "$line" --output test
    done < domain.txt
    while read -r line; do 
        python3 scripy1337.py -d "$line"
    done < other_input_file
} && mv *.txt savehere \
  && dos2unix savehere/* \
  && sort savehere/*.txt | uniq > done.txt

답변3

#!/bin/bash
#!/usr/bin/env python3
while read -r line; do  #foobar
    python3 script.py -d $line --output test #foobar
done < domain.txt && 
while read -r line; do  #foobar
    python3 script1337.py -d $line #foobar
done < scriptfile.txt && 
mv *.txt savehere && 
dos2unix savehere/* && 
sort savehere/*.txt | uniq > done.txt #foobar

관련 정보