ljs*_*dev 2 syntax bash coding-style
我有一组 Bash 脚本,希望能够解析它们以提取它们的定义。
如果我在脚本 (ab) 中使用此处文档作为注释块来形成我的描述,如下所示,这会带来任何好处吗:
#!/bin/bash
DESCRIPTION = <<EOD
This nifty script does x, y and sometimes z
EOD
# rest of script...
Run Code Online (Sandbox Code Playgroud)
超过:
#!/bin/bash
# Description
# ==========
#
# This nifty script does x, y and sometimes z
# rest of script...
Run Code Online (Sandbox Code Playgroud)
即,有没有一种简单的方法可以让我从 Bash 脚本中提取变量,或者我需要编写一个脚本来解析文件,以获得从# Description下一个空行到格式正确的描述块?
更新
对此有很多很好的答案。我选择了最适合我的用例和偏好的一个,但所有这些都是 Bash 注释实现的很好的例子。
提取信息的难度没有实际差异。这些注释具有不可执行的轻微好处,因此不创建变量会带来边际性能优势$DESCRIPTION,但您很难衡量它。
当然,还有一个额外的问题,即这里文档显示的语法不是有效的 shell。您需要考虑以下方面:
\n\ncat >/dev/null <<EOD\n...\nEOD\nRun Code Online (Sandbox Code Playgroud)\n\n$DESCRIPTION或者也许(但也许不是 \xe2\x80\x94 除非你想在脚本本身中使用):
DESCRIPTION=$(cat <<EOD\n...\nEOD\n)\nRun Code Online (Sandbox Code Playgroud)\n\n或者,也许更好的是:
\n\n: DESCRIPTION = <<EOD\n...\nEOD\nRun Code Online (Sandbox Code Playgroud)\n\n冒号命令是一个无操作;它评估其论点并取得成功。与任何一个cat变体相比,我更喜欢这个。和参数是干扰词DESCRIPTION;=您可以省略其中一个或两个,而不影响脚本。您可能也想考虑在第一个周围使用引号EOD:
: <<'EOD'\n...$(cat this is not executed)...\nEOD\nRun Code Online (Sandbox Code Playgroud)\n\n请注意,该:命令和第一个cat替代方法不会初始化 shell 变量$DESCRIPTION。如果这很重要,那么您将不得不使用命令替换$(...)版本,并注意到有两行标记了作业的结束。
| 归档时间: |
|
| 查看次数: |
2063 次 |
| 最近记录: |