2016-03-16 157 views
0

我寫的shell腳本採用參數,傳遞shell腳本變量的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」 的''而不是A' –

+0

我瘦你剛纔忘了加上'$'?使用:'python filename.py「$ a」「$ b」「$ c」'...在shell腳本中,您需要在變量之前使用'$'。我也爲安全添加了引號,否則如果值有空格,事情就會中斷;-) – Carpetsmoker

+1

並確保瞭解shell腳本 –

回答

1

如果你想獲得變量的外殼使用$變量名的值。 參見下面的例子

[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"]