我在Makefile中有以下代码片段,除非我删除对sed& amp;的引用,否则它总是会失败。下面的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
可能出现什么问题?
答案 0 :(得分:19)
一个错误来自sed
。当你写:
sed "s/\s*$//"
make将变量$/
扩展为空字符串,因此sed缺少分隔符。尝试:
sed "s/\s*$$//"
使用$"
导致grep
中出现同样的问题。请改用grep -v "^\s*$$"
。