【发布时间】:2018-05-29 08:21:43
【问题描述】:
我正在尝试编写一个在 Linux 服务器上执行几件事的脚本,我想将 bash 用于大多数 Linux 特定命令,并且只将 Python 用于最复杂的东西,但为了做到这一点我需要从 bash 脚本中导出一些变量并在 python 脚本中使用它们,但我没有找到一种方法可以做到这一点。所以我尝试创建两个非常小的脚本来测试这个功能: 1.sh 是一个bash脚本
#!/bin/bash
test_var="Test Variable"
export test_var
echo "1.sh has been executed"
python 2.sh
2.sh 是一个 Python 脚本:
#!/usr/bin/env python3
print("The python script has been invoked successfully")
print(test_var)
你可以猜到,当我执行第一个脚本时,第二个脚本失败并出现关于未知变量的错误:
$ ./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
我之所以尝试这样做是因为我更习惯使用 bash,并且我想在 bash 中使用 $1、$2 变量。这在 Python 中也可以吗?
[编辑] - 我刚刚发现如何在 Python 中使用 $1 和 $2 它。你需要使用sys.argv[1]和sys.argv[2]并导入sys模块import sys
【问题讨论】:
-
如果您不想访问环境变量,为什么不直接使用
os.environ['test_var']? -
您也可以将变量传递给 Python 脚本:
python 1.py "variable-value"