我见过一些 shell 脚本,它们通过在同一个 shell 脚本中写入文件的内容来传递文件。例如:
if [[ $uponly -eq 1 ]]; then
mysql $tabular -h database1 -u usertrack -pabulafia usertrack << END
select host from host_status where host like 'ld%' and status = 'up';
END
exit 0
fi
我已经能够做类似的事情了:
python << END
print 'hello world'
END
如果脚本的名称是 myscript.sh,那么我可以通过执行 sh myscript.sh 来运行它。我得到了我想要的输出。
问题是,我们可以在 Makefile 中做类似的事情吗?我环顾四周,他们都说我做了类似的事情:
target:
python @<<
print 'hello world'
<<
但这行不通。
这是我一直在寻找的链接:
http://www.opussoftware.com/tutorial/TutMakefile.htm#Response%20Files
请您参考如下方法:
你可以这样做:
define TMP_PYTHON_PROG
print 'hello'
print 'world'
endef
export TMP_PYTHON_PROG
target:
@python -c "$$TMP_PYTHON_PROG"
首先,您要使用 define 和 endef 定义一个多行变量。然后您需要将它export 到 shell,否则它会将每个新行视为一个新命令。然后使用 $$ 重新插入 shell 变量。
