shell脚本构建系统

shell脚本构建系统

在我的工作场所,有一个 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 编写它,因为那是你喜欢的。

相关内容