【发布时间】:2017-11-27 14:46:46
【问题描述】:
我正在尝试在 jenkins 上发送参数并在 python 文件中识别该参数。
有没有可以在 bash 上执行此操作的命令:
param = "Hello World"
param -> /usr/green/test.py
还有py文件是怎么知道抓取参数的?
【问题讨论】:
我正在尝试在 jenkins 上发送参数并在 python 文件中识别该参数。
有没有可以在 bash 上执行此操作的命令:
param = "Hello World"
param -> /usr/green/test.py
还有py文件是怎么知道抓取参数的?
【问题讨论】:
你可以通过在 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']
【讨论】:
您可以通过这种方式访问传递给脚本的参数:
import sys
print sys.argv[1]
~ python test.py 'hello world'
【讨论】:
你必须把脚本的参数放在文件路径后面,用空格分隔,像这样:
/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
【讨论】:
一种解决方案是使用 python 通过管道打印参数和处理。
喜欢:
read.py:
#!/usr/bin/python
import sys
pythonparams = sys.stdin.read()
# do something
然后
echo "$param"|./read.py
【讨论】: