1

我有一个奇怪的问题。我在这样的 shell 脚本中调用 python 脚本:

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

它是一个从 json 资源读取元数据的 python 脚本。在大多数情况下,它按预期工作,填充变量元数据。

在某些情况下,它根本不返回任何内容。甚至没有调用来自 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 ..."

在这些情况下,甚至不会打印“测试输出 ...”...

4

2 回答 2

2

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

于 2013-10-31T16:16:08.630 回答
1

问题出在传递的参数中......不知何故,空格搞砸了对 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`

用 + 替换空格后,它现在就像一个魅力!谢谢大家!

于 2013-10-31T16:37:29.310 回答