一、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
结果如下: