环境变量覆盖命令

Environment variable overrides command

我设置了EC2_IP_ADDRESS变量

$ export EC2_IP_ADDRESS="`docker run -it -v $PWD/infrastructure:/terraform -v $PWD/data:/data terraform sh -c "terraform init; terraform state show module.aws_ec2.aws_eip.aws_instance_eip" | grep public_ip | awk '{print }'`"

然后我尝试将一些文件复制到 EC2 实例中:

$ scp -i key.pem -r src/* ec2-user@$EC2_IP_ADDRESS:/home/ec2-user/src/

但输出错误:: nodename nor servname provided, or not known

$ echo "scp -i key.pem -r src/* ec2-user@$EC2_IP_ADDRESS:/home/ec2-user/src/"

的输出
:/home/ec2-user/src/c/* ec2-user@X.X.X.X

似乎变量 EC2_IP_ADDRESS 之后的任何内容都转到字符串的开头,覆盖命令。

关于如何解决这个问题有什么想法吗?

似乎变量最后包含 $'\r'。用

删除它
EC2_IP_ADDRESS=${EC2_IP_ADDRESS%$'\r'}