bash 命令替换出现空白
bash command substituation comes up blank
我有以下Dockerfile
FROM public.ecr.aws/docker/library/python:3.7-slim-buster as base
WORKDIR /code
RUN apt-get update -y && \
pip install --upgrade pip && \
mkdir ~/.aws \
&& touch ~/.aws/credentials
RUN apt-get install -y nodejs npm awscli jq
这是 slim-buster 的基础。
我正在尝试从这个推荐的 解决方案
中执行一个命令 aws sts
命令
但是 eval 解决方案出现“空白”或者括号在 make 命令中没有正确转义:
sts-qa:
eval $(aws sts assume-role --role-arn arn:aws:iam::1234556778:role/aws-role --role-session-name pebble | jq -r '.Credentials | "export AWS_ACCESS_KEY_ID=\(.AccessKeyId)\n export AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)\nexport AWS_SESSION_TOKEN=\(.SessionToken)\n"')
我得到的错误是:
root@b79fd0ebf8cf:/code# make sts-qa
eval \n export AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)\n export AWS_SESSION_TOKEN=\(.SessionToken)\n"')
/bin/sh: 1: Syntax error: ")" unexpected
我试过:
- 从命令中转义所有 ()。我收到以下错误:
/bin/sh: 2: Syntax error: Unterminated quoted string
- 分配的内容
$(...) 变成一个变量。我得到的输出是
eval
(
整个 bash 命令是空白的
我 运行 没有想法
$(...)
是用于扩展变量名的 Makefile 语法,因此 (
由您要执行的命令中的第一个未转义的 )
关闭。您需要加倍 $
才能按字面意思对待它。
sts-qa:
eval $$(aws sts assume-role --role-arn arn:aws:iam::1234556778:role/aws-role --role-session-name pebble | jq -r '.Credentials | "export AWS_ACCESS_KEY_ID=\(.AccessKeyId)\n export AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)\nexport AWS_SESSION_TOKEN=\(.SessionToken)\n"')
我有以下Dockerfile
FROM public.ecr.aws/docker/library/python:3.7-slim-buster as base
WORKDIR /code
RUN apt-get update -y && \
pip install --upgrade pip && \
mkdir ~/.aws \
&& touch ~/.aws/credentials
RUN apt-get install -y nodejs npm awscli jq
这是 slim-buster 的基础。
我正在尝试从这个推荐的
aws sts
命令
但是 eval 解决方案出现“空白”或者括号在 make 命令中没有正确转义:
sts-qa:
eval $(aws sts assume-role --role-arn arn:aws:iam::1234556778:role/aws-role --role-session-name pebble | jq -r '.Credentials | "export AWS_ACCESS_KEY_ID=\(.AccessKeyId)\n export AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)\nexport AWS_SESSION_TOKEN=\(.SessionToken)\n"')
我得到的错误是:
root@b79fd0ebf8cf:/code# make sts-qa
eval \n export AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)\n export AWS_SESSION_TOKEN=\(.SessionToken)\n"')
/bin/sh: 1: Syntax error: ")" unexpected
我试过:
- 从命令中转义所有 ()。我收到以下错误:
/bin/sh: 2: Syntax error: Unterminated quoted string
- 分配的内容
$(...) 变成一个变量。我得到的输出是
eval
( 整个 bash 命令是空白的
我 运行 没有想法
$(...)
是用于扩展变量名的 Makefile 语法,因此 (
由您要执行的命令中的第一个未转义的 )
关闭。您需要加倍 $
才能按字面意思对待它。
sts-qa:
eval $$(aws sts assume-role --role-arn arn:aws:iam::1234556778:role/aws-role --role-session-name pebble | jq -r '.Credentials | "export AWS_ACCESS_KEY_ID=\(.AccessKeyId)\n export AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)\nexport AWS_SESSION_TOKEN=\(.SessionToken)\n"')