2012-09-15 120 views
2

鑑於這種(中更多...):bash命令路徑故障

compile_coffee() { 
    echo "Compile COFFEESCRIPT files..." 
    i=0 
    for folder in ${COFFEE_FOLDER[*]} 
    do 
     for file in $folder/*.coffee 
     do 
      file_name=$(echo "$file" | awk -F "/" '{print $NF}' | awk -F "." '{print $1}') 
      file_destination_path=${COFFEE_DESTINATION_FOLDER[${i}]} 
      file_destination="$file_destination_path/$file_name.js" 
      if [ -f $file_path ]; then 
       echo "+ $file -> $file_destination" 
       $COFFEE_CMD $COFFEE_PARAMS $file > $file_destination #FAIL 
       #$COFFEE_CMD $COFFEE_PARAMS $file > testfile 
      fi 
     done 
     i=$i+1 
    done 
    echo "done!" 
    compress_javascript 
} 

而只是爲了澄清,除了#FAIL線一切正常flawessly,如果我做錯了就告訴我,在問題我已經是:

  • 行執行和做的事情必須做,但不寫,我把在「file_destination」的文件。
  • 如果刪除該路由中的一個文件夾(它與此腳本有關,請參見下文),bash將拋出錯誤並指出該文件夾不存在。
  • 如果我再次創建文件夾,沒有錯誤,但沒有文件。
  • 如果我將$ file_destination更改爲「testfile」,它會創建具有正確內容的文件。
  • $ file_destination路徑正常 - 如您所見,我的腳本會迴應它 -
  • 如果我回顯整行,請使用params複製確切的命令並將其執行到腳本所在的目錄中的shell上,它 的作品。

我不知道什麼是錯,一直在琢磨了兩個小時......

腳本輸出(實際路徑):

(alpha)[[email protected] herobrine]$ ./deploy.sh compile && ls -l database/static/js/ 
=============================== 
=== Compile === 
Compile COFFEESCRIPT files... 
+ ./database/static/coffee/test.coffee -> ./database/static/js/test.js 
done! 
Linking static files to django staticfiles folder... done! 
total 0 

完成命令:

coffee --compile --print ./database/static/coffee/test.coffee > ./database/static/js/test.js 

我錯過了什麼?

編輯我已經做了一些改進。 在shell中,如果我禁用python virtualenv腳本,但如果我從腳本中調用deactivate它說沒有找到命令。

+0

運行腳本之前是否存在'./ database/static/js'? – beny23

回答

0

假設目標文件的名稱中沒有字符作爲空格,目錄就存在了。我試着添加2> & 1例如,

$COFFEE_CMD $COFFEE_PARAMS $file > testfile 2>&1 

編譯器可能會將所需的輸出和/或編譯消息放在stderr而不是stdout上。您也可能想要放置咖啡的完整路徑,例如/ usr/bin/coffee而不僅僅是編譯器名稱。

+0

已經嘗試過,但發現問題,回答下面... – Pyronhell

0

發現問題不是bash腳本本身。幾行後,部署腳本從django執行collectstatic方法。注意到,直到那行文件在那裏,我開始讀到,collecstatic有一個緩存系統。一個非常奇怪的海事組織,因爲我必須刪除所有的靜態文件,並從頭開始讓腳本工作。

所以...問題不是bash腳本,而是django緩存系統。無論如何,我對我的名聲並沒有得到安慰。

完整的部署腳本在這裏:https://github.com/pyronhell/deploy-script-boilerplate如果你能改進它,歡迎大家歡迎。

乾杯。