猫EOF问题与缩进[重复]

问题描述 投票:0回答:1

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

我不确定为什么在内容缩进时尝试将内容写入文件是如此麻烦

任何人都可以指出如何关闭这个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

但问题是关闭“EOF”时cat没有正确关闭。

文件内容/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即使有缩进也不那么简单?我知道当内容中根本没有空格时它工作正常但人们不确定当内容有空格时为什么会这么麻烦

因为这个问题,任何更好的替代方案即将放弃猫

任何帮助将不胜感激谢谢

bash docker-compose amazon-cloudformation cat heredoc
1个回答
-2
投票

当我认为你打算写<<-EOF时,你写过<<EOF

Bash没有关闭你的heredoc,因为它希望-EOF关闭它,因为你打开heredoc的方式。要么将结尾从EOF更改为-EOF,要么,这就是我的建议,将<<-EOF更改为<<EOF

© www.soinside.com 2019 - 2024. All rights reserved.