如何将Bash变量作为Python参数传递

时间:2016-06-01 21:13:28

标签: python bash

我试图弄清楚是否可以将存储在Bash中的变量中的值作为python脚本中的参数值传递。

我们有一个python脚本,用于在BIND中创建DNS记录,我的任务是清理过时的DNS数据库。到目前为止,我在bash中有类似的东西:

HOSTNAMES=$(</Users/test/test.txt)

ZONE="zone name here"

IP=$(</Users/test/iptest.txt)

for host in $HOSTNAMES
do
  python pytest.py --host $HOSTNAMES --zone $ZONE --ip $IP
done

不幸的是,我没有测试环境,我可以在测试之前对其进行测试,而且我没有任何Python或Bash脚本编写经验。我主要只做了Powershell脚本编写,但想知道我上面的内容是否有效。

我在这里的论坛上环顾四周,但没有发现任何我能理解的东西。这篇文章似乎在某种程度上回答了我的问题,但我仍然不能完全确定这是如何工作的。 How to pass a Bash variable to Python?

2 个答案:

答案 0 :(得分:3)

是的,似乎对我很好。

为了测试,我将一个名为test.py的非常快速的python脚本放在一起:

#!/usr/bin/python
import sys

print 'number of arguments: ', len(sys.argv)
#we know sys.argv[0] is the script name, let's look at sys.argv[1]
print sys.argv[1]

然后,在您的终端中,设置一个变量:

>testvar="TESTING"

尝试你的脚本,将变量传递给脚本:

>python test.py $testvar
>number of arguments: 2
>TESTING

不可否认,我不是很精通Python,但这似乎完成了你想要的。也就是说,这假设您引用的Python脚本已经设置为解析传递给它的参数的名称 - 您会注意到我的测试脚本没有这样做,它只是吐出你传入它的任何内容。

答案 1 :(得分:2)

只要导出变量,就可以从Python访问它们。

$ export VAR=val
$ python -c "import os; print os.environ['VAR']"
val