从bash导出变量并在Python中使用它

时间:2018-05-29 08:21:44

标签: python linux bash shell

我正在尝试编写一个在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]

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'])

检查参考:How do I access environment variables from Python?

答案 1 :(得分:2)

要使用python脚本中的环境变量,您需要调用:

import os
os.environ['test_var']

os.environ是包含所有环境变量的字典,您可以使用dict具有的所有方法。例如,你可以写:

os.environ.get('test_var', 'default_value')