鉴于此(更多......):
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之外的所有内容都工作得很顺利,如果我做错了,请告诉我,我遇到的问题是:
我不知道这有什么问题,想知道两个小时......
脚本输出(实际路径):
(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,则表示找不到命令。
答案 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,如果您可以改进,欢迎大家。
干杯。