2016-03-16 2 views
0

Am написание сценария оболочки, который принимает аргумент,Передача переменной сценария оболочки в сценарий Python в качестве аргумента

while getopts ":i:o:m" opt; do 
    case $opt in 
    i) a="$OPTARG" 
    ;; 
    o) b="$OPTARG" 
    ;; 
    m) c="$OPTARG" 
    ;; 
    \?) echo "Invalid option -$OPTARG" >&3 
    ;; 
    esac 
done 

тогда я добавление

python filename.py a b c 

вместо значения переменной, имя переменной передается программе Python ,

Пожалуйста, помогите решить эту проблему.

+0

использование '«$ а»' вместо 'a' –

+0

я тонко вы просто забыли добавить' '$? Используйте: 'python filename.py" $ a "" $ b "" $ c "... ... В сценариях оболочки вам нужно использовать' $ 'перед переменными. Я также добавил цитаты для безопасности, кстати, в противном случае все будет ломаться, если есть пробел в значении ;-) – Carpetsmoker

+1

и обязательно узнайте о сценариях оболочки –

ответ

1

Если вы хотите, чтобы получить значение переменной в использовании оболочки $ variable_name. смотрите пример ниже

[email protected]:/tmp# cat t.sh 
#!/bin/sh 
a="test" 
b="test2" 
c="test3" 
python test.py $a $b $c 

[email protected]:/tmp# cat test.py 
#!/usr/bin/python 
import sys 
print sys.argv[1:] 


[email protected]:/tmp# ./t.sh 
['test', 'test2', 'test3'] 
-2

Вы можете получить доступ к переменным окружения по имени, но вам нужно экспортировать их.

на баш

myvariable="something" 
export myvariable 

на питона

import os 
print os.environ["myvariable"] 
Смежные вопросы