我有一个别人制作的 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 


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!