我有一个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就会抱怨。
答案 0 :(得分:1)
你不应该在makefile的命令部分上写\ t。 按Tab键获取所需空间。
A : B C D E F G
gcc -o a A
编辑 - 如果您使用的是vi / vim,则可能正在使用一个命令将TAB替换为设定的数量 空间(通常为4)。检查一下。
答案 1 :(得分:0)
如果您只想使用bash,则需要解析文件,删除\t
并转储到新文件。
像这样;
while -r line; do echo "${line//\t/}" >> new_makefile; done < makefile