• [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 曹操 刘备 

     

     

  • 相关阅读:
    hdu 2001 计算两点的距离
    hdu 2001 计算两点的距离
    hdu 2000 ASCII码排序(c语言)
    hdu 2000 ASCII码排序(c语言)
    1.网页学习-开始学习第一步:
    .net 父窗口线程交给子窗口
    多线程传递多个参数
    not Exists的使用方法
    xml.dom.minidom介绍
    .net之线程控件之间访问
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/11976025.html
Copyright © 2020-2023  润新知