gpt4 book ai didi

bash - 解析 BASH 脚本中的 heredoc 注释

转载 作者:行者123 更新时间:2023-11-29 09:35:34 24 4
gpt4 key购买 nike

我有一组 Bash 脚本,希望能够解析它们以提取它们的定义。

如果我在脚本中形成我的描述 (ab) 使用 heredocs 作为评论 block ,如下所示,这会带来任何好处吗:

#!/bin/bash

DESCRIPTION = <<EOD

This nifty script does x, y and sometimes z

EOD

# rest of script...

结束:

#!/bin/bash

# Description
# ==========
#
# This nifty script does x, y and sometimes z

# rest of script...

即,是否有一种简单的方法可以让我从 Bash 脚本中提取变量,或者我是否需要编写脚本来解析文件以从 # Description 到格式正确的描述 block 下一个空行?

更新

对此有很多很好的答案。我选择了最适合我的用例和偏好的那个,但它们都是 Bash 注释实现的绝佳示例。

最佳答案

在提取信息的难度方面没有实际差异。注释具有不可执行的轻微好处,因此不创建 $DESCRIPTION 变量具有边际性能优势,但您很难衡量它。

当然,还有一个额外的问题,即为 heredoc 显示的语法不是有效的 shell。您需要考虑以下方面:

cat >/dev/null <<EOD
...
EOD

或者也许(但也许不是 — 除非您想在脚本本身中使用 $DESCRIPTION):

DESCRIPTION=$(cat <<EOD
...
EOD
)

或者,也许更好:

: DESCRIPTION = <<EOD
...
EOD

冒号命令是空操作;它评估其论点并成功。我更喜欢这个而不是任何一个 cat 变体。 DESCRIPTION= 参数是干扰词;您可以在不影响脚本的情况下省略其中一个或两个。您可能也想考虑在第一个 EOD 周围使用引号:

: <<'EOD'
...$(cat this is not executed)...
EOD

请注意,: 命令和第一个 cat 替代项不会初始化 shell 变量 $DESCRIPTION。如果这很重要,您将坚持使用命令替换 $(...) 版本,注意有两行标记分配的结束。

关于bash - 解析 BASH 脚本中的 heredoc 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20206413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com