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
我想他是想用它来获得一个新的终端窗口,却没有意识到他的外壳和终端不是一回事。