首页 文章

如何在python脚本文件中使用shell脚本中的变量?

提问于
浏览
0

我有一个shell脚本,它有一个运行python脚本的命令 . 我想要在shell脚本中使用4个变量(例如:var1,var2,var3,var4)在python脚本中使用 . 有什么建议怎么做?

例如:我想用shell脚本中的变量替换 "lastTest44"firstTest44A-S00000582 .

driver.find_element_by_id("findKey_input").clear() 
driver.find_element_by_id("findKey_input").send_keys("lastTest44") 
driver.find_element_by_id("ST_View_lastTest44, firstTest44").click() 
driver.find_element_by_link_text("A-S00000582").click()

3 回答

  • 0

    只需使用命令行参数:

    Shell Script

    a=1
    b=2
    python test1.py "$a" "$b"
    

    Python Script

    import sys
    var1 = sys.argv[1]
    var2 = sys.argv[2]
    print var1, var2
    
  • 4

    您要使用的是命令行参数 . 这些是在调用您要运行的特定代码时指定的参数 .

    在Python中,可以通过 sys 模块在名为 argv 的变量下访问它们 . 这是从调用者传入的所有参数的数组,其中数组中的每个值都是一个字符串 .

    例如,假设我正在编写的代码采用参数来绘制正方形 . 这可能需要4个参数 - 一个x坐标,y坐标,一个宽度和一个高度 . 这个Python的代码可能如下所示:

    import sys
    x = sys.argv[1]
    y = sys.argv[2]
    width = sys.argv[3]
    height = sys.argv[4]
    
    # Some more code follows.
    

    有几点需要注意:

    • 每个参数的类型为 string . 这意味着在这种情况下,在将它们转换为我想要的正确类型之前,我无法执行任何算术 .

    • sys.argv 中的第一个参数是正在运行的脚本的名称 . 您需要确保从数组 sys.argv[1] 中的第二个位置开始读取,而不是像通常那样从典型的第零个索引开始读取 .

    There is some more detailed information here,它可以引导您更好地处理命令行参数 . 但是,要开始,这将足够好 .

  • 0

    我想这会做你想要的:

    2014-06-05 09:37:57 [tmp]$ export VAR1="a"
    2014-06-05 09:38:01 [tmp]$ export VAR2="b"
    2014-06-05 09:38:05 [tmp]$ export VAR3="c"
    2014-06-05 09:38:08 [tmp]$ export VAR4="d"
    2014-06-05 09:38:12 [tmp]$ python
    Python 2.7.3 (default, Feb 27 2014, 19:58:35) 
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from os import environ
    >>> environ['VAR1']
    'a'
    >>> environ['VAR2']
    'b'
    >>> environ['VAR3']
    'c'
    >>> environ['VAR4']
    'd'
    >>> environ['VAR5']
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__
        raise KeyError(key)
    KeyError: 'VAR5'
    

    请记住捕获KeyError并相应地做出响应或使用get方法(来自dict类)并指定在密钥不存在时使用的默认值:

    >>> environ.get('VAR5', 'not present')
    'not present'
    

    更多:https://docs.python.org/2/library/os.html

相关问题