bash 中 here document
大多数脚本语言都有here document, 因为它太有用了。
为什么有用?
你受得了 C “”字符串里不断的 \” \t \r 等解引用吗,还有 多行字符串的拼接 “a”"b”。所以我讨厌 C的字符串处理,更讨厌用C来写 cgi。
here document 让一切都清静了。
作为历史悠久的bash也不例外。
cat << EOF
ok , baby
EOF
我经常使用 here document 和 <()来写脚本
awk –f <(cat <<EOF
{
…… $abc ….
}
EOF
)
我发现一个问题 <<EOF 这种here document 和 双引号字符串(“”)有相同的 解析效果,就是会对 $name, ${name}进行变量替换, 也会对$()进行命令替换。使用 \$, 可以解决这个问题。但这影响了here document 的可读性。有什么更好的方法吗?
<<'EOF' 救星来了
如果定界符被任何引号括住,shell 就不会对文本进行替换。
abc=ok
cat <<'EOF'
$abc
EOF
输出: $abc
abc=ok
cat <<EOF
$abc
EOF
输出: ok