python学习笔记2--shell脚本传参数到python脚本中

环境:ubuntu20.04 python3 vscode

背景:想一键串联多个分析数据脚本,但是面临一个路径传入问题。奈何找了很多shell传参数教程都没有奏效。

1、set方式

1.1材料准备

1.py

import sys
print("脚本1 start") 
print(sys.argv[1])
print(sys.argv[2])
print("脚本1 end")

1.sh

#!/bin/sh
set "test" "1"
python3 1.py $1 $2

给1.sh权限:

chmod +x 1.sh

运行:

ylh@y:~/ros_kinetic_ws/src/test$ ./1.sh 
脚本1 start
test
1
脚本1 end

1.2个人见解

之前参考一些blog定义名称后再传入参数,但是一直没成功,试了试上面方式,居然成功了。感觉这种方式有点不友好,应该有更好方式。下次找到再更新

2、定义变量方式

这种方式解决了上面阅读不友好情况,注意.sh文件=号两侧不能有空格!!!!!

2.1材料准备

1.py

import sys
print("脚本1 start") 
print(sys.argv[1])
print(sys.argv[2])
print(sys.argv[3])
print("脚本1 end")

2.py

import sys
#验证了参数的1,2顺序跟传入顺序相匹配,而不是shell定义的的变量顺序!!!
print("脚本2 start")
print(sys.argv[1])
print(sys.argv[2])
print(sys.argv[3])
print("脚本2 end")

1.sh

#!/bin/sh
a="aaaa" 
b="bbbb"
c=66
python3 1.py "$a" "$b" "$c"
python3 2.py "$b" "$c" "$a"

运行测试:

ylh@y:~/ros_kinetic_ws/src/test$ ./1.sh 
脚本1 start
aaaa
bbbb
66
脚本1 end
脚本2 start
bbbb
66
aaaa
脚本2 end

2.2个人见解

该方式得注意,命名变量时,注意=左右一定不能存在空格,并且引用时使用 ”$xxx” 格式
.py文件读取传入变量是根据.sh传入的顺序来获取的,从左到右为读取顺序,并且读取是sys.argv[1]为第一个;并且这些变量都是字符串类型,若需要使用int类型,务必在调用处进行类型转换。

#####################
不积硅步,无以至千里
好记性不如烂笔头

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值