我使用Makefile进行Web开发,在那里我将scss(sass)文件编译为css,我想在已编译的文件中添加横幅(带有日期,版本,版权信息,git分支等的标题)。
虽然我最终设法实现了这一点,但是当我打开结果时,在连接位置显示了<item android:id="@android:id/"
。
Makefile是这样的:
SELECT
i.ID AS ItemID,
i.ResourceID,
i.DateAdded,
i.LocationID,
i.OwnerID,
i.Barcode,
i.MissingReasonID,
i.DateRemoved,
ll.PatronID,
ll.ID AS LoanID,
ll.IssueDateTime,
ll.DueDate,
ll.ReturnDateTime,
ll.LoanTypeID,
ll.RenewalCount,
ll.DeleteSummary,
ll.ReturnStatusID,
ll.FineID,
coalesce(ll.LoanCount, 0)
COUNT(case when Item.DateRemoved IS NULL then 1 end)
over (partition by ResourceID) AS AvailableItemCount
FROM Item i
LEFT JOIN
(
SELECT
l.ID,
l.ItemID,
l.PatronID,
l.IssueDateTime,
l.DueDate,
l.ReturnDateTime,
l.LoanTypeID,
l.RenewalCount,
l.DeleteSummary,
l.ReturnStatusID,
l.FineID,
COUNT(*) over (partition by ItemId) AS LoanCount,
row_number()
over (partition by ItemId
order by l.IssueDateTime DESC, l.ID DESC) as rn
FROM Loan l
) as ll
on ll.ItemID = i.ID
and ll.rn = 1
生成的文件在vim中如下所示:
<feff>
BANNER:=\
"/**\n"\
" * @project $(PROJECT_NAME)\n"\
" * @author John Doe <j.doe@example.com>\n"\
" * @build $(DATE)\n"\
" * @copyright Copyright (c) " $(shell date +%Y) ", <Example Inc.>\n"\
" */\n"\
"\n"
css: $(CSS_DEST_DIR)/main.css
$(call colorecho, 3, $(shell du -h $^))
$(CSS_DEST_DIR)/main.css: $(CSS_SRC_DIR)/main.scss $(CSS_SRC_FILES)
@mkdir -p $(CSS_DEST_DIR)
$(call colorecho, 3, "Compiling $@");
$(eval TMPFILE := $(shell mktemp))
@-$(SASS_COMPILER) $(SASS_COMPILER_OPTIONS) -o $(TMPFILE) $<
@echo $(BANNER) | cat - $(TMPFILE) > $@
输出
/**
* @project data-al
* @author Johannes Braun <j.braun@agentur-halma.de>
* @build 2018-12-13-1619
* @release gitRevSync.long() + gitRevSync.branch()
* @copyright Copyright (c) 2018 , <HALMA GmbH & Co. KG>
*/
<feff>.button,.button--primary,.cookie-notification__accept,.search-form__submit,.mobnav__trigger,.mobnav__button{padding:0;...
当我在bash命令行上执行相同操作时,一切正常。我在OSX btyw上。
我该如何摆脱呢?谢谢您的帮助
答案 0 :(得分:1)
我强烈建议您放弃echo
。除了打印简单的字符串后跟换行符之外,它根本无法移植。例如,\n
不会在所有系统上都解析为换行符。相反,可以考虑使用printf
(程序,而不是函数),它已针对各种特殊字符和格式字符串进行了明确定义。
但是,正如Raymond所提到的那样,这些字符是UTF-8 BOM(byte order mark)。它们可能是由$(SASS_COMPILER)
生成的;看看是否有防止这种情况发生的选项。
答案 1 :(得分:0)
在连接之前从一开始就删除Bom。有很多选择,但是UILabel
可以很好地工作。 (是的,它将保留任何其他unicode字符,包括任何嵌入的非破坏性零宽度空格。)
String