我的目的是在我的工作流程中自动化编译过程。我在根目录中有一个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脚本运行,监听后台的变化,而不会接受可执行文件。
答案 0 :(得分:1)
为任何命令运行bash -e <cmd>
是不合法的,而不仅仅是make。给bash
的参数应该是 shell脚本,而不是程序。
我不知道你为什么要尝试这样的shell;为什么不直接运行make
?但如果您真的想在bash中运行make
,则必须使用-c
标记。
如果make失败,你想要做的就是停止你的脚本,然后使用:
make || exit 1
./sheet
如果您想在错误后继续运行但不运行命令,请使用:
make && ./sheet