在我的工作场所,有一个 Bash 脚本,用于列出服务器场中运行的 Oracle 数据库。我使用一些内联的 Python 代码(例如:)对其进行了一些修改python -c "import sys..."
。
它已经有了很大的发展,这促使我考虑使用脚本的构建系统。理想情况下,构建系统将允许我在单独的文件中编写 python 代码,然后将其全部放在一个统一的脚本中。一个统一的脚本将有助于简化部署过程。
此外,构建系统应该删除任何注释以减少脚本的大小,但这可能是最简单的部分。
如果没有的话,我会花时间自己写一个。我在想,即使有通用的构建工具(与语言无关),我也想使用它们。
答案1
我觉得回答这个问题是错误的,但你可以这样:
要点是 Makefile 是完成这项工作的正确工具,并且您可以使用此处字符串语法摆脱 shell 转义。
基本脚本.sh
# some script...
xargs -0 python -c <<'PYTHON_SCRIPT_asdlfkjhsldjkhf'
PYTHON_SCRIPT_asdlfkjhsldjkhf
# more script ...
生成文件
merged_script.sh: base_script.sh python_script.py
{ sed -ne '0,/PYTHON_SCRIPT_/p' base_script.sh; \
sed -e SOME_REGEX_TO_STRIP_COMMENTS python_script.py; \
sed -ne '/^PYTHON_SCRIPT_/,999999999p' base_script.sh; \
} > merged_script.sh
基本上,它获取 shell 脚本的上半部分,然后拼接 python 脚本,然后附加脚本的下半部分。 python 脚本放置在此处字符串中,因此您不必担心任何 shell 转义。您确实需要确保该字符串不会出现在 python 代码中,但这不应该是一个真正的问题。您还必须使 python 脚本短于最大参数限制,但您已经遇到了这个问题。
编写正则表达式来删除 python 注释留作练习。
抓取脚本上半部分和下半部分的 sed 命令很草率,可以用其他一些实用脚本替换来拼接文件。我建议用 python 编写它,因为那是你喜欢的。