Bash脚本在新终端中打开可执行文件

时间:2014-04-18 17:43:17

标签: macos bash makefile

我的目的是在我的工作流程中自动化编译过程。我在根目录中有一个Makefile,我发现自己经常输入make来查看结果,然后SIGTERM进行刷新(我正在运行OS X 10.8.5 )。理想情况下,bash脚本会监听文件中的更改,并在生成文件时自动执行,然后运行可执行文件。

我有以下尝试实现bash脚本。

#!/bin/bash

while true
do
    ATIME=`stat library/grid.c | egrep -o -m 3 '"(.{20})"' | tail +4`

    if [[ "$ATIME" != "$LTIME" ]]
    then
        echo "Running make..."
        bash -e make; ./sheet
        LTIME=$ATIME
    fi
    sleep 1
done

这会导致以下错误

/usr/bin/make: /usr/bin/make: cannot execute binary file
./listener.sh: line 10: ./sheet: No such file or directory

如何在新的终端窗口中发出命令以生成和运行可执行文件?关键是我可以保持我的bash脚本运行,监听后台的变化,而不会接受可执行文件。

1 个答案:

答案 0 :(得分:1)

为任何命令运行bash -e <cmd>是不合法的,而不仅仅是make。给bash的参数应该是 shell脚本,而不是程序。

我不知道你为什么要尝试这样的shell;为什么不直接运行make?但如果您真的想在bash中运行make,则必须使用-c标记。

如果make失败,你想要做的就是停止你的脚本,然后使用:

make || exit 1
./sheet

如果您想在错误后继续运行但不运行命令,请使用:

make && ./sheet