2013-10-31 31 views
1

我有一個奇怪的問題。我打電話一個shell腳本內的python腳本是這樣的:從Bash調用Python腳本沒有什麼

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

這是一個Python腳本,從一個JSON資源讀取元。在大多數情況下,它按照需要工作,填充變量元數據。

對於某些情況下,它什麼都不返回。即使是來自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 ..." 

甚至沒有「測試輸出......」得到印在這些情況下...

+1

你在什麼環境? –

+0

Ubuntu 12.04 LTS,Python 2.7.3(默認,2013年9月26日,20:08:41) –

+1

它工作的情況和失敗的地方有什麼區別?不同的文件路徑,不同的用戶(以及權限)等等。 –

回答

0

問題是在傳遞的參數...不知何故空間搞砸了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` 

與+現在的工作就像一個魅力更換空間! Thx大家!

2

嘗試改變tailhead -1看看它開始工作。如果腳本輸出的最後一行是空白,那麼這就是您的總體命令(包括tail)會返回的內容。

+0

好點...其實不是這樣的;)Thx無論如何... –