Shell/Bash - 分配 cli 结果后字符串变量中的额外字符

Shell/Bash - extra characters in string variable after assigning cli result

在我的一个变量中,我存储了 aws cli 命令的结果(字符串)。 当回显值时它显示在 " " 但将其作为参数注入时显示在字符串的开头和结尾添加了额外的字符 (&#34)。

如何消除这些?他们代表什么?

代码和错误日志:

dms_arn=$(aws dms describe-replication-tasks --filter Name=replication-task-id,Values="$dms_name" `--query=ReplicationTasks[0].ReplicationTaskArn --region us-east-1)`
echo Stopping Task "$dms_arn"


build   02-Nov-2021 18:52:01    Stopping Task "arn:aws:dms:us-east-1:account:task:XYZ"
error   02-Nov-2021 18:52:02    
error   02-Nov-2021 18:52:02    An error occurred (InvalidParameterValueException) when calling the StopReplicationTask operation: Invalid task ARN:  "arn:aws:dms:us-east-1:account:task:XYZ"

&#34是双引号对应的HTML实体

参见:entity

要转换它们,请检查:Short way to escape HTML in Bash? and Bash script to convert from HTML entities to characters

&#34 是双引号 (") 的 html 代码。双引号正在转换为 html 代码。

尝试在 aws 命令中使用 —output text 选项(这样你就不会得到引号)。请参阅有关输出格式的文档:https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output-format.html

如有必要,您可以使用 shell 参数扩展删除换行双引号:

dms_arn=${dms_arn%\"}
dms_arn=${dms_arn#\"}

echo "$dms_arn"
# quotes are gone