这个问题在这里已有答案:
注意:如果有人认为此问题已经得到解答,请在下面粘贴您的答案,否则请勿干扰那些试图帮助需要帮助的人。谢谢
我不确定为什么在内容缩进时尝试将内容写入文件是如此麻烦
任何人都可以指出如何关闭这个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即使有缩进也不那么简单?我知道当内容中根本没有空格时它工作正常但人们不确定当内容有空格时为什么会这么麻烦
因为这个问题,任何更好的替代方案即将放弃猫
任何帮助将不胜感激谢谢
当我认为你打算写<<-EOF
时,你写过<<EOF
。
Bash没有关闭你的heredoc,因为它希望-EOF
关闭它,因为你打开heredoc的方式。要么将结尾从EOF
更改为-EOF
,要么,这就是我的建议,将<<-EOF
更改为<<EOF
。