これを考えると(特に...):
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 を使用して正確なコマンドをコピーし、スクリプトと同じディレクトリ内のシェルで実行すると、機能します。
これの何が悪いのかわからない、2時間考えていた...
スクリプト出力 (実際のパス):
(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
私は何が欠けていますか?
編集私はこれを通していくつかの進歩を遂げました。シェルでは、python virtualenv を非アクティブ化するとスクリプトは機能しますが、スクリプトから非アクティブ化を呼び出すと、コマンドが見つからないと表示されます。