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.py
domain.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