Shell - Here Document(HereDoc)
Shell - Here Document(HereDoc)
Here Document(常简写为 HereDoc)是 Shell 脚本中一种特殊的输入重定向方式,用于将多行文本直接嵌入脚本中,并将其作为命令的标准输入。它的核心用途是避免频繁使用 echo 或手动输入多行内容,尤其适合生成文件、交互式输入或传递长文本数据。
写入文件
解析变量和$()
cat >zzz.txt <<EOF
aaa
${PWD}
$(date)
bbb
EOF
禁用变量替换(原样写入)
cat >zzz.txt <<'EOF'
aaa
${PWD}
$(date)
bbb
EOF
总结
cat > file << EOF 覆盖写入文件
cat >> file << EOF 追加写入文件
<< 'EOF' 原样写入,不解析变量
<< EOF 解析变量和命令
打印多行文本
cat <<EOF
aaa
${PWD}
$(date)
bbb
EOF
python代码执行
简单示例
python3 -c "$(cat <<'EOF'
### python code
print("hello")
EOF
)"
带命令行参数
python3 -c "$(cat <<'EOF'
import sys
print(sys.argv)
EOF
)" aaa bbb
# 输出 ['-c', 'aaa', 'bbb']