从Bash调用的Python脚本没什么

时间:2013-10-31 16:04:06

标签: python bash shell

我有一个奇怪的问题。我在shell脚本中调用python脚本,如下所示:

---filename: dl.sh---
#/bin/bash
...
metaData=`python /var/www/music/getMetaData.py "$artist" "$title" | tail -n 1`
...

这是一个从json资源中读取元数据的python脚本。在大多数情况下,它根据需要工作,填充变量metaData。

在某些情况下,它根本不返回任何内容。甚至没有调用python脚本中的打印命令。在我看来,python脚本根本没有被执行,因为当我手动运行命令它总是有效:

python /var/www/music/getMetaData.py "Artist Name" "Title Name" | tail -n 1

在脚本没有返回任何手动执行

的情况下
echo $metaData

导致空行。

python脚本的第一行是:

---filename: getMetaData.py---
import urllib2
import sys
import re
import datetime

print "Testing Output ..."

在这些情况下,甚至没有“测试输出...”......

2 个答案:

答案 0 :(得分:2)

尝试将tail更改为head -1,看看它是否开始有效。如果脚本输出的最后一行是空白,那么这就是您的整体命令(包括tail)将返回的内容。

答案 1 :(得分:0)

问题在于传递的args ......不知何故空间搞砸了对python脚本的调用。

在:

metaData=`python /var/www/music/getMetaData.py "$artist" "$title" | tail -n 1`

现在:

artist=${artist//[ ]/;}
title=${title//[ ]/;}
metaData=`python /var/www/music/getMetaData.py "$artist" "$title" | tail -n 1`

用+替换空格现在就像魅力一样!大家好!