【发布时间】:2015-10-10 17:38:32
【问题描述】:
我的 makefile 中有以下目标:(我想在分离的进程中运行 python http 服务器,并在 bash 脚本完成后终止服务器)
TEST_PORT = 17777
test::
$(ENV_VARS) \
python -m SimpleHTTPServer $(TEST_PORT); \
PID=$$(lsof -t -i @localhost:$(TEST_PORT) -sTCP:listen); \
echo $(PID); \
if [ -n "$$PID" ]; \
then \
python test.py; \
fi; \
function finish { \
if [ -n "$$PID" ]; \
then \
kill -9 $$PID; \
fi \
} \
trap finish EXIT;
但是,当我在 python ... 行后面加上 & 时,我得到一个错误
/bin/dash:语法错误:“;”出乎意料
如何以适当的方式完成?
编辑
我已更改我的 makefile 以执行以下操作:
test::
python -m SimpleHTTPServer $(TEST_PORT) &
PID=$$(lsof -t -i @localhost:$(TEST_PORT) -sTCP:listen); \
if [ -n "$$PID" ]; \
then \
$(ENV_VARS) python test.py; \
fi \
function finish { \
if [ -n "$$PID" ]; \
then \
kill -9 $$PID; \
fi \
} \
echo $$PID; \
trap finish EXIT;
但是我得到一个错误:(没有行号)
/bin/dash: 语法错误:单词意外
【问题讨论】:
-
当您完全省略
python ...行时,您是否会遇到同样的错误? (以后你应该尽量准备最少的例子——我不会为了重现你的错误而乱用 python 和端口。) -
谢谢,我会考虑的。我绝对需要
if、function和 python 命令的组合来演示正在发生的事情(不要错过细节)
标签: bash makefile dash-shell