【问题标题】:Send a parameter from bash to a python script将参数从 bash 发送到 python 脚本
【发布时间】:2017-11-27 14:46:46
【问题描述】:

我正在尝试在 jenkins 上发送参数并在 python 文件中识别该参数。

有没有可以在 bash 上执行此操作的命令:

param = "Hello World"
param -> /usr/green/test.py

还有py文件是怎么知道抓取参数的?

【问题讨论】:

    标签: python bash jenkins boto3


    【解决方案1】:

    你可以通过在 python 脚本中使用 sys egg 将参数从 BASH 传递给你的 python 脚本。然后在命令中传递环境变量。

    PyScript

    import sys
    
    print 'Number of arguments:', len(sys.argv), 'arguments.'
    print 'Argument List:', str(sys.argv)
    

    BASH 中的命令:

    $python test.py $BUILD_ID $BUILD_URL
    

    输出:

    Number of arguments: 2 arguments.
    Argument List: ['test.py', '107', 'http://0.0.0.0:8080/artefact/builds/24']
    

    【讨论】:

      【解决方案2】:

      您可以通过这种方式访问​​传递给脚本的参数:

      import sys
      
      print sys.argv[1]
      
      ~ python test.py 'hello world'
      

      【讨论】:

        【解决方案3】:

        你必须把脚本的参数放在文件路径后面,用空格分隔,像这样:

        /usr/green/test.py arg1 arg2 arg3
        

        要将 bash 变量的值传递给脚本,您必须在变量名称前加上 $(美元符号):

        param="Hello world"
        /usr/green/test.py "$param"
        

        可以使用sys.argv 访问python 脚本中的参数列表。列表中的第一个元素是脚本的路径,因此第二个元素是第一个参数。

        示例 /usr/green/test.py (Python 3):

        import sys
        
        print(sys.argv[1])
        

        bash 输入:

        param="Hello World"
        python3 /usr/green/test.py "$param"
        

        bash 输出:

        Hello World
        

        注意:您必须将变量名放在引号中,否则 Hello 和 World 将作为两个单独的参数传递给 test.py。

        要在没有python 命令的情况下执行脚本,可以添加#! (shebang) 行:

        #!/usr/bin/python3
        
        import sys
        
        print(sys.argv[1])
        

        通过输入 bash 使脚本可执行:

        chmod +x /usr/green/test.py
        

        【讨论】:

          【解决方案4】:

          一种解决方案是使用 python 通过管道打印参数和处理。

          喜欢:

          read.py:

          #!/usr/bin/python
          
          import sys
          
          pythonparams = sys.stdin.read()
          
          # do something
          

          然后

          echo "$param"|./read.py
          

          【讨论】:

          • 我特此提名此答案为 Rube Goldberg 奖 xD
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-01-06
          • 2016-08-12
          • 2019-03-11
          • 1970-01-01
          • 2013-03-26
          • 2012-06-05
          • 1970-01-01
          相关资源
          最近更新 更多