缩进的猫EOF问题

时间:2019-04-16 02:20:01

标签: bash docker-compose amazon-cloudformation cat heredoc

  

注意::如果有人认为此问题已被回答,请在下面粘贴您的答案,否则请勿干扰他人   试图帮助需要帮助的人。谢谢

我不确定为什么在缩进内容时尝试麻烦将内容提交文件

谁能指出如何关闭此Heredoc区块

UserData:
  "Fn::Base64":
    !Sub |
      #!/bin/bash -xe
      NONCE=$(cat /tmp/nonce)
      cat <<-EOF > /tmp/docker-compose.yaml
      version: '3.5'
      services:
      onboarding:
          container_name: nginx
          image: nginx:${BuildId}
          restart: always
            ports:
            - 80:80
          environment:
            ENV: ${Env}
            AWS_REGION: ${Region}
            NONCE: $NONCE
      EOF
      source ~/.bashrc

但是问题是cat不能通过关闭“ EOF”正确关闭。

文件/tmp/docker-compose.yaml

的内容
version: '3.5'
services:
onboarding:
    container_name: nginx
    image: nginx:${BuildId}
    restart: always
      ports:
      - 80:80
    environment:
      ENV: ${Env}
      AWS_REGION: ${Region}
      NONCE: $NONCE
EOF
source ~/.bashrc

但这是期望的结果

version: '3.5'
services:
onboarding:
    container_name: nginx
    image: nginx:${BuildId}
    restart: always
      ports:
      - 80:80
    environment:
      ENV: ${Env}
      AWS_REGION: ${Region}
      NONCE: $NONCE

首先,为什么即使有缩进,此Heredoc也不那么简单?我知道当内容中根本没有空格时,它会很好地工作,但是我不确定为什么当内容中有空格时,为什么会这么麻烦

由于这个问题,任何更好的替代方案都将放弃给猫

任何帮助将不胜感激 谢谢

1 个答案:

答案 0 :(得分:-2)

当我认为您打算写<<-EOF时,您已经写过<<EOF

Bash不会关闭您的Heredoc,因为它希望-EOF关闭它,因为您打开了Heredoc的方式。将结尾从EOF更改为-EOF,或者,这就是我的建议,将<<-EOF更改为<<EOF