【发布时间】:2025-12-05 13:10:01
【问题描述】:
注意:如果有人觉得这个问题之前已经回答过,请在下面粘贴您的答案,否则请不要干扰他人 试图帮助需要帮助的人。谢谢
我不确定为什么在内容缩进时尝试将内容分类到文件会如此麻烦
谁能指出如何关闭这个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即使有缩进也不是那么简单?我知道当内容中根本没有空格时它可以正常工作,但是人们不确定为什么当内容有空格时会如此麻烦
由于这个问题,我即将放弃 cat 的任何更好的选择
任何帮助将不胜感激 谢谢
【问题讨论】:
-
不一样......那个问题没有缩进......这很容易......当内容有缩进时,如我的问题所示是一个问题
-
不同的问题,相同的答案。使用制表符,而不是空格,并且不要缩进结束字符串。
-
我已经使用了制表符..正如您所见,我添加了
>>-EOF,因为他们提到使用制表符作为空格。我这样做了,但没有奏效...我花了太多钱在这件事上花费了几个小时,而在我没有合乎逻辑的理由为什么它不应该正常工作的事情上花费几个小时很烦人 -
您可以粘贴您认为可行的答案,我可以试一试看看..我在问题中发布了上面的所有代码..如果您有信心您的答案可以发布,我会试试看..感谢您的帮助
-
我只是给了你两个为什么它不起作用的原因。 “使用制表符,而不是空格,并且不要缩进你的结束字符串。”我不打算回答这个问题,因为我认为它应该被关闭。
标签: bash docker-compose amazon-cloudformation cat heredoc