注释块内的sed命令执行

时间:2015-08-27 15:39:49

标签: bash shell sed

我有一个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!!!"

上述代码有错误吗?

2 个答案:

答案 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的输出,因此执行代码。

如果要注释掉代码,请让行以#开头。