0

我有一个makefile所谓的“动作”由\t. 当我需要执行这些操作时,shell 当然会抱怨\tgcc -o a filename.c Coomand not found. 搜索仅产生如何使用sed. 但是,如果不允许使用它,但只能使用bash?

这种“规则”的例子是:

A : B C D E F G
\tgcc -o a A

\t这里只是为了清楚起见,在实际文件中我按 Tab 键。我需要的是能够阅读制表符之后的内容并使用eval或反引号执行它。如果我反引号我读到的内容(即没有修剪制表符),shell 会抱怨。

4

2 回答 2

1

您不应该在 makefile 的命令部分实际写入 \t 。按 T​​ab 键获得所需的空间。

A : B C D E F G
    gcc -o a A

编辑 - 如果您使用 vi/vim,您可能正在使用将 TAB 替换为一定数量的空格(通常为 4 个)的命令。检查那个。

于 2013-01-25T02:00:07.023 回答
0

如果您只想使用 bash,则需要解析文件,删除\t并转储到新文件。

像这样的东西;

while -r line; do echo "${line//\t/}" >> new_makefile; done < makefile
于 2013-01-25T06:04:02.027 回答