【发布时间】:2022-11-14 03:42:43
【问题描述】:
我正在研究一个 bash 脚本,它从 api 调用中获取特定的输出并将其保存在一个变量中。我想使用 sed 将我的 appspec.yaml 中的 placeholder 字符串替换为该变量中存储的值。
我的 appspec.yaml 文件如下所示:-
version: 0.0
Resources:
- TargetService:
Type: AWS::ECS::Service
Properties:
TaskDefinition: "placeholder"
LoadBalancerInfo:
ContainerName: "new-nginx-app"
ContainerPort: 80
这是我的 bash 脚本:-
#!/bin/bash
task_definition_arn=$(aws ecs describe-task-definition --task-definition task-def | grep "taskDefinitionArn" | awk '{print $2}' | sed 's/,*$//g')
echo $task_definition_arn
sed -i 's/placeholder/$(task_definition_arn)/g' appspec.yaml
cat appspec.yaml
运行此脚本会按预期返回值:-
"arn:aws:ecs:us-east-1:123456789:task-definition/task-def:13"
但是我的 appspec.yaml 文件中的文本没有按预期被替换。
version: 0.0
Resources:
- TargetService:
Type: AWS::ECS::Service
Properties:
TaskDefinition: "$(task_definition_arn)"
LoadBalancerInfo:
ContainerName: "new-nginx-app"
ContainerPort: 80
任何帮助将不胜感激。谢谢你。
【问题讨论】:
标签: bash