[Python]在python中调用shell脚本,并传入参数-02python操作shell实例

Posted wangju003

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Python]在python中调用shell脚本,并传入参数-02python操作shell实例相关的知识,希望对你有一定的参考价值。

首先创建2个shell脚本文件,测试用.

  • test_shell_no_para.sh 运行时,不需要传递参数
  • test_shell_2_para.sh 运行时,需要传递2个参数

   test_shell_no_para.sh 内容如下:

   test_shell_2_para.sh内容如下

注意含有变量的字符串要用 双引号 括起来

   直接在命令行运行 test_shell_2_para.sh 执行结果如下: 

wangju@wangju-HP-348-G4:~$ sh test_shell_2_para.sh \'para1\' \'para2\'
hello world para1 para2 

 脚本说明:

shell脚本参数化采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${10},${11}....才能获取到参数,但是一般很少会超过10个参数的情况。

shell脚本参数化的方式参照:shell中脚本参数传递的两种方式

通过python调用shell,实际操作:

  • 通过python 调用test_shell_no_para.sh脚本
In [29]: os.system(\'./test_shell_no_para.sh\')                                   
hello world
Out[29]: 512
  •  python 调用test_shell_2_para.sh脚本,并传入2个参数 arg1和arg2
In [31]: arg1=\'pyarg1\'                                                          

In [32]: arg2=\'pyarg2\' 

In [35]: os.system(\'./test_shell_2_para.sh \'+arg1+\' \'+arg2)                     
hello world pyarg1 pyarg2 
Out[35]: 0

注意:参数前后要有空格

如果参数前后没有空格会报下面的错:

命令行会将参数也视为脚本名字的一部分

  •   在shell脚本中调用shell脚本,并传入参数(重点掌握)

  先创建1个python脚本,内容如下:

import os
import sys

if len(sys.argv)<3:
    print(\'Please Input Two Arguments\')
    sys.exit(1)
arg0=sys.argv[1]
arg1=sys.argv[2]

os.system(\'./test_shell_2_para.sh \'+arg0+\' \'+arg1)

  执行python脚本,效果如下:

wangju@wangju-HP-348-G4:~$ python3 pp.py
Please Input Two Arguments
wangju@wangju-HP-348-G4:~$ python3 pp.py 曹操 刘备
hello world 曹操 刘备 

 

 

以上是关于[Python]在python中调用shell脚本,并传入参数-02python操作shell实例的主要内容,如果未能解决你的问题,请参考以下文章

python 在python中调用shell脚本

python调用shell脚本 获取shell脚本中间的输出值

怎么在python脚本中调用其它的python脚本运行?

shell调用python脚本,并且向python脚本传递参数

python 如何调用带参数的shell脚本

参数传递:shell脚本调用一个带参数的python函数