16

我在 Makefile 中有以下代码片段,除非我删除下面对 sed 和 grep 的引用,否则它总是失败。

TAB=$(shell printf "\t")
all: abstract.tsv
      $(shell cut -d "${TAB}" -f 3 abstract.tsv | sed "s/^\s*//" | \
        sed "s/\s*$//" | grep -v "^\s*$" | sort -f -S 300M | \
        uniq > referenced_images.sorted.tsv)

这是我得到的错误:

/bin/bash: -c: line 0: unexpected EOF while looking for matching `"'
/bin/bash: -c: line 1: syntax error: unexpected end of file

有什么问题?

4

1 回答 1

25

一个错误来自sed. 当你写:

sed "s/\s*$//"

make 将变量扩展$/为空字符串,因此 sed 缺少分隔符。尝试:

sed "s/\s*$$//"

使用$"grep. 改为使用grep -v "^\s*$$"

于 2013-02-25T16:23:20.000 回答