我试图弄清楚是否可以将存储在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?
答案 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