shell传参python脚本和获取返回值的探索方式

一、python脚本

1、情况1:正常return

文件名test1.py

#无参数有返回值的函数
def Have_return():
    return 55

if __name__ == '__main__':
    Have_return()

2、情况2:使用sys

文件名test1.py

```bash
import sys
#无参数有返回值的函数
def Have_return():
    return 'abs hkd'
    #sys.exit(55)

if __name__ == '__main__':
    #Have_return()
    #或者
    res = Have_return()
    sys.exit(res)

3、情况3:不return而是print

文件名test1.py

#无参数有返回值的函数
def Have_return():
    print("abs hkd")

if __name__ == '__main__':
    Have_return()

二、shell脚本调用python脚本

1、情况1下,python 文件名调用
文件名test.sh

#! /bin/bash
path=pwd
file_path=$path/test1.py
res=`python3 $file_path`
echo $res
#echo $@  #或者

结果如下:shell没有接收到返回值
在这里插入图片描述

2、情况1下,使用python -c 命令调用

#! /bin/bash
path=`pwd`
#file_path=$path/test1.py
cd $path
res=`python3 -c 'import test1; test1.Have_return()`
echo $res

结果如下:shell没有接收到返回值
在这里插入图片描述

3、在情况2下,使用以上两种方式都可在控制台打印

但是,这个返回值不能重定向到文件和进行管道操作,可能是因为sys.exit()的原因,只在调用并退出的时候打印在控制台
在这里插入图片描述

4、在情况3下,正确的调用方式

python中使用print而不使用return,shell中正常调用,就能接收到print内容重定向到文件和使用管道命令
在这里插入图片描述

三、shell传参给python脚本

1、python脚本

文件名test2.py
i

mport argparse
parser = argparse.ArgumentParser() ## 新建参数解释器对象
parser.add_argument('--count',type=int) ## 添加参数,注明参数类型
parser.add_argument('--name') ## 添加参数
args = parser.parse_args()### 参数赋值,也可以通过终端赋值
def Introduce(count, name):
        print(count,name)

if __name__ == '__main__':
    Introduce(args.count,args.name) ## 带参数

2、shell脚本

文件名test.sh

#! /bin/bash
path=`pwd`
file_path=$path/test2.py
res=`python3 $file_path $@`
echo $res

3、调用命令

bash ./test.sh --count=12 --name=david
结果如下:
在这里插入图片描述

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XB_tonticc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值