我想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
在script.py
完成后运行domain.txt
(它不起作用,&&
因为它接受 1 个参数)。
答案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