2

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

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 路径没问题-如您所见,我的脚本与它相呼应-
  • 如果我回显整行,则使用参数复制确切的命令并将其执行到脚本所在目录中的 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,它会说找不到命令。

4

2 回答 2

0

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

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

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

于 2012-09-16T12:03:23.567 回答
0

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

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

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

干杯。

于 2012-10-01T11:07:16.607 回答