我有一个奇怪的问题。我在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 ..."
在这些情况下,甚至没有“测试输出...”......
答案 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`
用+替换空格现在就像魅力一样!大家好!