Bash命令路由故障

时间:2012-09-15 17:58:54

标签: bash shell coffeescript

鉴于此(更多......):

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之外的所有内容都工作得很顺利,如果我做错了,请告诉我,我遇到的问题是:

  • 该行执行并执行它必须执行的操作,但是不要写入我放在“file_destination”中的文件。
  • 如果删除该路由中的文件夹(它相对于此脚本,请参见下文),bash会抛出错误并指出该文件夹不存在。
  • 如果我再次制作文件夹,没有错误,但也没有文件。
  • 如果我将$ file_destination更改为“testfile”,则会创建包含正确内容的文件。
  • $ file_destination路径可以 - 你可以看到,我的脚本回应了它 -
  • 如果我回显整行,用params复制确切的命令并将其执行到脚本所在的同一目录下的shell中,它 作品。

我不知道这有什么问题,想知道两个小时......

脚本输出(实际路径):

(alpha)[pyron@vps 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,则表示找不到命令。

2 个答案:

答案 0 :(得分:0)

假设目标文件的名称中没有字符作为空格,目录存在等等。我尝试添加2>& 1例如

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

编译器可能会在stderr而不是stdout上放置所需的输出和/或编译消息。您可能还想要完整的咖啡路径,例如: / usr / bin / coffee而不仅仅是编译器名称。

答案 1 :(得分:0)

发现问题不是bash脚本本身。几行后,部署脚本从django执行collectstatic方法。注意到文件在那行之前,我开始读到collecstatic有一个缓存系统。一个非常奇怪的IMO,因为我必须删除所有静态文件并从头开始让脚本工作。

所以......问题不是bash脚本而是django缓存系统。无论如何,我不会给我的声誉。

完整部署脚本位于:https://github.com/pyronhell/deploy-script-boilerplate,如果您可以改进,欢迎大家。

干杯。