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

Macos 在新终端中打开可执行文件的Bash脚本,macos,bash,makefile,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

我的目的是在我的工作流程中自动化编译过程。我在根目录中有一个
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脚本保持运行,在后台监听更改,而不让可执行文件接管。

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

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

如果要在make失败时停止脚本,请使用:

make || exit 1
./sheet
make && ./sheet
如果要继续跟踪错误但不运行命令,请使用:

make || exit 1
./sheet
make && ./sheet

我想他是想用它来获得一个新的终端窗口,却没有意识到他的外壳和终端不是一回事。