首页 > shell脚本中怎么调用python脚本中的带参函数呀

shell脚本中怎么调用python脚本中的带参函数呀

已经可以传值了,哈哈哈!

如题呀……我是小白,求各位大神解惑!

build_using_xctool.sh
auto_send_email.py

build_using_xctool.sh 中运行 auto_send_email.py 中的 sendMessage(a,b,c,d,...) 函数,a,b,c,d,... 某些参数需要从 build_using_xctool.sh 中传过去!

事情是这样的,我在网上找了一个自动打包分发的shell脚本,然后我想在打包完成上传至fir上面之后发邮件通知自己和同事,然后又找了一个发送邮件的python脚本!

build_using_xctool.sh

#!/bin/bash

#前面的略...

python /Users/gyd/Desktop/auto_send_email.py "这是标题" "这是内容" 

auto_send_email.py

# -*- coding: UTF-8 -*-
import sys, os, re, urllib, urlparse
import smtplib
import traceback
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

password = "******"
fromaddr = "123456@qq.com"
smtpaddr = "smtp.qq.com"
toaddrs = ["654321@qq.com"]

def sendemail(title,content):
    mail_msg = MIMEMultipart()
    if not isinstance(title,unicode):
        title = unicode(title, 'utf-8')
    mail_msg['Subject'] = title
    mail_msg['From'] =fromaddr
    mail_msg['To'] = ','.join(toaddrs)
    mail_msg.attach(MIMEText(content, 'html', 'utf-8'))
    try:
        s = smtplib.SMTP_SSL("smtp.qq.com", 465)
        s.login(fromaddr,password)  #登录邮箱
        s.sendmail(fromaddr, toaddrs, mail_msg.as_string()) #发送邮件
        s.quit()
        return True

    except Exception,e:
        return flase

if sendemail(sys.argv[1], sys.argv[2]):
    print "邮件已发送!"
else:
    print "邮件发送失败!"

Python 可以利用 sys.argv 拿到命令列上的 arguments:

$ python test.py 1 2 3

test.py:

import sys

print(sys.argv)

結果:

['test.py', '1', '2', '3']

所以你在 build_using_xctool.sh 中可以這樣調度 python:

python /Users/gyd/Desktop/auto_send_email.py subject msg toaddrs fromaddr smtpaddr password

然後在 auto_send_email.py 中:

import sys  # 自己 import sys
...

if __name__ == '__main__':
    sendmail(*sys.argv[1:])

我回答過的問題: Python-QA


我觉得你需要一本python cookbook


你需要第三方库 sh


#!/bin/bash

name=$1
age=$2
echo "name=${name}, age=${age}"

./a.sh 'abc' 11

【热门文章】
【热门文章】