如何在makefile shell命令中使用管道?

时间:2013-02-25 16:20:03

标签: bash shell makefile

我在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

可能出现什么问题?

1 个答案:

答案 0 :(得分:19)

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

sed "s/\s*$//"

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

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

使用$"导致grep中出现同样的问题。请改用grep -v "^\s*$$"