在python脚本中,我希望使用bash脚本中包含列表的变量。
我是这样做的: 首先,我用bash脚本创建了一个列表。此外,我将列表格式更改为python格式,最后导出列表:
#!/bin/bash
PYTHONPATH=$(which python)
TDATES="080201 080523 080905 090116 090515 090828 091211 100416 100730 101112
110311 110701 111014 120210 120601 120914 130111 130503 130809 131213
140404 140725"
echo $TDATES > datei.txt
sed "s/ /\\', \\'/g" datei.txt | sed "s/^/[\\'/g" | sed "s/$/\\']/g" > tdates.txt
TDP=$(cat tdates.txt)
export TDP
rm tdates.txt datei.txt
# exec python script
${PYTHONPATH} plot.py
“sed”命令的格式将从“080201 080523…”转换为[“080201”,“080523”,“…”,]。在python脚本中,我使用以下命令导入列表:
^{pr2}$屏幕输出如下:['080201','080523','…']这很好,但是 如果我试着用
for i in TDATES:
print i
我去拿
[
'
0
8
0
2
0
1
'
,
而不是
080201
080523
...
我不知道我没注意到什么。感谢您的帮助!在
不要更改tdate,它在python中完全可以解析。bash脚本如下所示:
您的python脚本如下所示:
^{pr2}$另一种选择是不导出环境变量,并在bash脚本中将
$TDATES
变量作为输入参数传递给python脚本:然后在python中,您将执行以下操作:
线
将环境变量
^{pr2}$TDP
的值作为字符串分配给TDATES
。在一个字符串上的迭代将一次进行一个字符,因此您的输出。例如:您需要做的是将字符串
TDATES
解析为一个Python列表,然后迭代该列表。一种方法是使用ast.literal_eval()
函数:相关问题 更多 >
编程相关推荐