RaymondHuang
RaymondHuang
发布于 2023-08-15 / 59 阅读
0
0

Makefile中的方法——执行方式、Shell回显与错误处理

方法的执行方式

· Makefile中的方法本质上就是一条一条的Shell指令

· 每一行指令都会打开一个新的进程来启动Shell来执行,因此两行间的变量是不互通的!

可以看到a=后面没有输出。

· 为了解决这种问题,可以让所有指令在一个Shell中执行,使用:

.ONESHELL:

可以看到此时a=后面就成功显示了2。

Shell指令的回显

· 你会发现上面的输出会输出三行内容,这个称为Shell语句的回显,即先把指令输出出来,再输出指令的结果

· 如果希望直接输出指令的结果,只需要在指令前面加上@即可

可以看到,就直接输出了最后一个echo的内容。

· 但如果一个方法的内容比较多,那就可以使用以下命令来使一整个方法都不输出回显:

.SILENT:

可以看到,也是只输出了echo的内容。

方法中的错误处理

· 在方法中,如果某一条指令无法正确运行,即出现了报错,那后面的指令也不会被执行。因此,需要错误处理。

· 如果希望出错了也继续往后执行,那就在这条指令前面加上减号(-)即可。

可以看到,第一条rm指令报错了,因为不存在hahaha.txt这个文件,可是最后echo还是输出出来了,因为rm指令前面加上了-号,忽略了错误。



评论