一、最好用的格式,即使注释包括语法错误内容也支持
: <<\EOF
注释
EOF
Comment:~ # cat comment.sh
: <<\EOE # 这里需要\。“EOF”使用其它字符串也行,只要头尾匹配即可。
echo a
$(echo b)
`
(
{
[
EOE
echo c
Comment:~ # bash -x comment.sh
+[1::comment.sh] :
+[9::comment.sh] echo c
c
二、其它不完整的格式
网络上搜索到的一些其它格式,这里列出这些格式存在的问题,用以提醒不要使用!
- 注释中反引号``或$()会被执行,不匹配时会报错。EOF为其它字符串效果相同(除单引号、反引号、减号)。
Comment:~ # cat comment1.sh
: <<EOF
command not found
echo a
$( echo b)
echo c
echo d
EOF echo e Comment:~ # bash -x comment1.sh +[1::comment1.sh] : ++[1::comment1.sh] echo a ++[1::comment1.sh] echo b ++[1::comment1.sh] echo d comment1.sh: line 1: bad substitution: no closing "
" in `
+[2::comment1.sh] echo e
e
- 注释后的语句全被忽略
2.1
Comment:~ # cat comment2.sh
: <<'EOF
echo a
echo b`
EOF'
echo c
Comment:~ # bash -x comment2.sh
+[1::comment2.sh] :
2.2
Comment:~ # cat comment3.sh
: <<EOF'
echo a
echo b`
'EOF
echo c
Comment:~ # bash -x comment3.sh
+[1::comment3.sh] :
2.3
Comment:~ # cat comment4.sh
: <<'
echo a
"
echo b`
(
]
}
'
echo c
Comment:~ # bash -x comment4.sh
+[1::comment4.sh] :
2.4 if 或while会检查语法问题,不要使用
if [ ]; then
注释
fi
while false; do
注释
done
网友评论