【问题标题】:How to run a specific command when makefile has a error?makefile 出错时如何运行特定命令?
【发布时间】:2013-01-15 09:50:59
【问题描述】:

我有一个调用

的生成文件
...

@lessc less/mything.less > style.uncompressed.css

当lessc 编译器出现错误时,我可以运行类似“beep”或“paplay ...”的命令吗?如果我该怎么做?

我在后台运行它,并且有一个脚本检查文件夹以进行更改,如果发生更改,则执行此 makefile。我没有第二台显示器,我不希望控制台始终位于顶部。所以出错时的声音会很棒。也许有人知道另一种解决方案。

【问题讨论】:

    标签: linux shell ubuntu makefile


    【解决方案1】:

    Make 对构建失败的默认操作是使用非零退出代码退出。如果 make 以非零退出代码终止,您可以围绕它创建一个简单的包装器,调用声音生成命令:

    make
    if [ $? -ne 0 ]; then
        tput bel
        aplay <sound to play>.mp3
    fi
    

    【讨论】:

    • echo -e "^G" 实际上在终端中打印了我“^G”,不能说这是否会发出哔哔声,因为我的台式电脑上没有电脑扬声器。但我在 ubuntu 下使用“paplay”(我认为是 pulseaudioplay),它工作得很好。这太酷了。想要这个很久了。谢谢。
    • 您也可以使用tput bel 代替回声线(应该在答案中使用它) - 这会导致哔声。大多数 linux 会解释哔声并使用更高级的音频
    • 请注意,[ 实际上是一个命令,而不是特殊的 shell 语法。 [ 只计算表达式并提供返回值。这个表格看起来不错,但请注意if make; then 也可以,我相信。
    • @altendky 它也有效,我倾向于使用习惯中的显式形式
    • @Petesh 一般而言,显式形式可能更好。我只是在确定它是什么意思。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2014-08-01
    • 2016-11-11
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多