我有一个bash脚本,我在其中评论了大量代码。但是注释块中的sed命令正在执行。请找到以下代码。
#!/bin/bash
echo OFF
set -vx
<<COMMENT1
echo "hello 1"
build_label='##BUILD_LABEL##'
build_branch_tag=$(echo $build_label | sed 's/\_[A-Z][a-z]\{2\}\_[0-9]\{2\}\_[0-9]\{4\}\_\{0,1\}[0-9]\{0,2\}//g')
build_branch_tag_wus="$build_branch_tag"_
build_date_tag=$(echo $build_label | sed 's/$build_branch_tag_wus//g')
build_path=http://zoho-build3/products/appcreator/webhost/$build_branch_tag/${build_date_tag}/
echo $build_path
echo "hello 2"
COMMENT1
echo "hello World!!!"
上述代码有错误吗?
答案 0 :(得分:3)
这不是一个评论块。这是一份在这里的文件。为了更好地模拟真实的评论块,请使用带有单引号的<<'COMMENT1'
。这将阻止执行$(...)
命令,忽略此文档中的所有特殊字符。
<<'COMMENT1'
echo "hello 1"
build_label='##BUILD_LABEL##'
build_branch_tag=$(echo $build_label | sed 's/\_[A-Z][a-z]\{2\}\_[0-9]\{2\}\_[0-9]\{4\}\_\{0,1\}[0-9]\{0,2\}//g')
build_branch_tag_wus="$build_branch_tag"_
build_date_tag=$(echo $build_label | sed 's/$build_branch_tag_wus//g')
build_path=http://zoho-build3/products/appcreator/webhost/$build_branch_tag/${build_date_tag}/
echo $build_path
echo "hello 2"
COMMENT1
我的偏好是使用#
来表达所有评论。它是直接的,万无一失的,并且可以在任何编辑器中正确地突出显示语法。
# echo "hello 1"
# build_label='##BUILD_LABEL##'
# build_branch_tag=$(echo $build_label | sed 's/\_[A-Z][a-z]\{2\}\_[0-9]\{2\}\_[0-9]\{4\}\_\{0,1\}[0-9]\{0,2\}//g')
# build_branch_tag_wus="$build_branch_tag"_
# build_date_tag=$(echo $build_label | sed 's/$build_branch_tag_wus//g')
# build_path=http://zoho-build3/products/appcreator/webhost/$build_branch_tag/${build_date_tag}/
# echo $build_path
# echo "hello 2"
答案 1 :(得分:0)
你在做什么不是评论。你正在做的是一个多行字符串,bash做它应该做的:它取代
$(command)
由command
的输出,因此执行代码。
如果要注释掉代码,请让行以#
开头。