将shell脚本变量作为参数传递给Python脚本

将shell脚本变量作为参数传递给Python脚本,python,shell,unix,Python,Shell,Unix,我正在写带参数的shell脚本 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 变量名不是

我正在写带参数的shell脚本

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程序


请帮助解决此问题。

您可以按名称访问环境变量,但需要导出它们

在狂欢节上

myvariable="something"
export myvariable
关于python

import os
print os.environ["myvariable"]

当您想要获取shell中变量的值时,请使用$variable\u name。 请参见下面的示例

root@s:/tmp# cat t.sh
#!/bin/sh
a="test"
b="test2"
c="test3"
python test.py $a $b $c

root@s:/tmp# cat test.py
#!/usr/bin/python
import sys
print  sys.argv[1:]


root@s:/tmp# ./t.sh
['test', 'test2', 'test3']

使用
“$a”
而不是
a
我想你忘了添加
$
?用法:
python filename.py“$a”“$b”“$c”
。。。在shell脚本中,需要在变量之前使用
$
。顺便说一句,我还添加了安全性的引号,否则如果值中有空格,事情就会破裂;-)一定要了解shell脚本谢谢,它对我很有用