Экспортируйте переменную из bash и используйте ее в Python - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь написать скрипт, который выполняет несколько вещей на сервере 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 и я хочу использовать $ 1$ 2 переменных в bash.Это также возможно в Python?

[РЕДАКТИРОВАТЬ] - Я только что узнал, как я могу использовать $ 1 и $ 2 в Python.Вам необходимо использовать sys.argv[1] и sys.argv[2] и импортировать модуль sys import sys

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Проверьте расширение Python, оно должно быть .py вместо .sh 1.sh

#!/bin/bash
 test_var="Test Variable"
 export test_var
 echo "1.sh has been executed"
 python 2.py

Библиотека ОС предоставит вам доступ к переменной окружения.Следующий код Python даст вам требуемый результат,

#!/usr/bin/env python3
import os
print("The python script has been invoked successfully")
print(os.environ['test_var'])

Проверьте для справки: Как получить доступ к переменным среды из Python?

0 голосов
/ 29 мая 2018

Чтобы использовать переменные окружения из вашего скрипта Python, вам нужно вызвать:

import os
os.environ['test_var']

os.environ - это словарь со всеми переменными окружения, вы можете использовать все методы, которые есть у dict.Например, вы можете написать:

os.environ.get('test_var', 'default_value')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...