我有一个别人制作的 Python 脚本。在我的 bash 脚本中,我想对 txt 文件中的每一行执行它,并使用每一行作为参数。然后根据 python 脚本的输出,将该行添加到新的 txt 文件中。
此刻我运行
sudo python tester.py 10.0.1.1 999 user pass
其中“10.0.1.1 999 user pass”将是我的 txt 文件中的一行。
如果成功,它会输出“SUCCESS!”。这是我想将该行复制到新文件的地方。
现在,为了让它变得更复杂,我想根据行的开头更改 python 脚本。这不是 100% 需要的,但可以让我免去事先分割 txt 文件的麻烦。
例如。如果该行以“10”开头,则使用脚本 1。如果该行以“192”开头,则使用脚本 2。两者都有相同的“SUCCESS!”输出。我已经尝试过了
cat list.txt | while read line
do
python tester.py $line
if $(...) == "S"*
then
$line >> good.txt
fi
done
但是有些不对劲。
希望这对有人能够帮助我有足够的意义。
克里斯
最佳答案
通过引用 $line
,您可以将该行中的所有单词合并到一个参数中,但 Python 脚本需要 4 个单独的参数。
您应该将该行的第一个字段读入其自己的变量中,以便可以测试它来决定运行哪个脚本。
然后将脚本的输出分配给一个变量,针对 SUCESS!
进行测试,如果匹配则写入输出文件。
while read -r ip rest
do
case "$ip" in
10.*) script=tester.py ;;
192.*) script=tester2.py ;;
*) echo "IP $ip doesn't start with 10 or 192";
exit;;
esac
result=$(sudo python $script $ip $rest)
if [[ $result == SUCCESS* ]]
then
echo "$ip $rest"
fi
done < list.txt > good.txt
关于python - 为每一行运行脚本并根据输出执行某些操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53400779/