通过bash执行多行python脚本

问题描述 投票:0回答:3

我有一个python脚本,可抓取NHL球队的比赛和统计数据以预测获胜者。该脚本的输出提供了各队比赛的一些常规数据,并预测了获胜者,格式为:

MATCHUP: San Jose Sharks ---- Anaheim Ducks
PTS%: 0.45 ---- 0.472
CF%: 50.7 ---- 48.0
5v5 Goals For per Game: 1.743 ---- 1.817
5v5 Goals Against per Game: 2.286 ---- 2.07
Power Play %: 17.46 ---- 14.67
Penalty Kill %: 85.71 ---- 77.0
Save Percentage: 0.889 ---- 0.908

Pick: San Jose Sharks.
Confidence: 15.8%.

[现在,我还有一个shell脚本,我想每天使用它执行我的python脚本(可能使用crontab,但还没到那儿),然后使用smtp通过电子邮件将结果发送给我,该shell脚本如下所示:

#!/bin/bash

d=$(date +%Y-%m-%d)

messagebody=$(python3 nhlpredictions.py)

echo $messagebody | mail -s "$d NHLpredictions" [email protected]

这可行,我收到电子邮件,但是输出格式为单行:

MATCHUP: San Jose Sharks ---- Anaheim Ducks PTS%: 0.45 ---- 0.472 CF%: 50.7 ---- 48.0 5v5 Goals For per Game: 1.743 ---- 1.817 5v5 Goals Against per Game: 2.286 ---- 2.07 Power Play %: 17.46 ---- 14.67 Penalty Kill %: 85.71 ---- 77.0 Save Percentage: 0.889 ---- 0.908 Pick: San Jose Sharks. Confidence: 15.8%.

我认为这是因为我将python脚本的输出保存到bash中的单个变量中。有什么办法可以解决我收到的电子邮件的格式与python脚本输出相同的方式(即多行)吗?希望我能在赛季重新开始之前使它正常工作,任何建议都会有所帮助,谢谢!

python bash smtp quotes
3个回答
0
投票

简而言之,>>重定向运算符将在指定文件的末尾附加行,其中-大于>的单个行将清空并覆盖文件。

将标准输出发送到文件python3 nhlpredictions.py >> text.txt

然后您可以使用cat连接文件并在标准输出上打印

#!/bin/bash

d=$(date +%Y-%m-%d)
python3 nhlpredictions.py >> text.txt

cat text.txt | mail -s "$d NHLpredictions" [email protected]

0
投票

在回显之后添加参数-e。

echo -e $ messagebody |邮件-s“ $ d NHLpredictions” [email protected]

如果不起作用,请检查您的变量是否包含符号“ \ n”。


0
投票

您应将字符串用"括起来,以确保它们保留换行符。

#!/bin/bash

d=$(date +%Y-%m-%d)

messagebody="$(python3 nhlpredictions.py)"

echo "$messagebody" | mail -s "$d NHLpredictions" [email protected]
© www.soinside.com 2019 - 2024. All rights reserved.