我正在尝试编写一个在Linux服务器上执行几项操作的脚本,我想对大多数Linux特定命令使用bash,并且只使用Python来处理最复杂的事情,但为了做到这一点我需要从bash脚本中导出一些变量并在python脚本中使用它们,但我找不到如何做到这一点的方法。所以我尝试创建两个非常小的脚本来测试这个功能: 1.sh是一个bash脚本
<p>
2.sh是一个Python脚本:
#!/bin/bash
test_var="Test Variable"
export test_var
echo "1.sh has been executed"
python 2.sh
正如您可以猜到的,当我执行第一个脚本时,第二个脚本失败并显示有关未知变量的错误:
#!/usr/bin/env python3
print("The python script has been invoked successfully")
print(test_var)
我之所以这样做是因为我对bash更加满意,我想在bash中使用$ 1,$ 2变量。这在Python中也有可能吗?
[编辑] - 我刚刚发现如何在Python中使用$ 1和$ 2。您需要使用$ ./1.sh
1.sh has been executed
The python script has been invoked successfully
Traceback (most recent call last):
File "2.sh", line 4, in <module>
print(test_var)
NameError: name 'test_var' is not defined
和sys.argv[1]
并导入sys模块sys.argv[2]
答案 0 :(得分:5)
检查python扩展名应该是.py而不是.sh 1.sh
#!/bin/bash
test_var="Test Variable"
export test_var
echo "1.sh has been executed"
python 2.py
os库将为您提供访问环境变量的权限。以下python代码将为您提供所需的结果,
#!/usr/bin/env python3
import os
print("The python script has been invoked successfully")
print(os.environ['test_var'])
答案 1 :(得分:2)
要使用python脚本中的环境变量,您需要调用:
import os
os.environ['test_var']
os.environ
是包含所有环境变量的字典,您可以使用dict具有的所有方法。例如,你可以写:
os.environ.get('test_var', 'default_value')