AWS S3 - aws-cli s3api 不接受 bash 变量中的参数

AWS S3 - aws-cli s3api not accepting parameter in a bash variable

我正在尝试使用 aws-cli 从冰川恢复对象,如下所示:

aws s3api restore-object --restore-request Days=7 --bucket mybucket --key some-file.ext

这很好用。但是我想通过脚本在一堆文件中执行此操作但是如果尝试类似的东西:

$ export I="some-file.ext"
$ aws s3api restore-object --restore-request Days=7 --bucket mybucket --key $I

aws-cli returns 这个错误:

An error occurred (404) when calling the RestoreObject operation: Not Found

无论 $I 包含什么,如果我手动获取值并将其传递给 aws-cli,它就会起作用:

$ echo $I
some-other-file.ext
$ aws s3api restore-object --restore-request Days=7 --bucket mybucket --key some-other-file.ext

如果我对同一个键重复操作,它 returns 确认:

$ aws s3api restore-object --restore-request Days=7 --bucket mybucket --key some-other-file.ext

An error occurred (RestoreAlreadyInProgress) when calling the RestoreObject operation: Object restore is already in progress

我的aws-cli版本如下:

$ aws --version
aws-cli/1.10.50 Python/2.7.6 Linux/3.13.0-92-generic botocore/1.4.40

如何使用 bash 变量传递 -key 参数?其他建议? Xargs 也失败了,尽管有另一个错误:

$ {echo list of files one per line} | xargs -L 1 aws s3api restore-object --restore-request Days=7 --bucket mybucket --key

An error occurred (404) when calling the RestoreObject operation: Not Found xargs: aws: exited with status 255; aborting

甚至没有 -L 1 xargs 打印由 , 和:

分隔的文件列表

xargs: aws: exited with status 255; aborting

即使尝试 this answer 它也会像上面那样 404 失败。

知道如何将 "script-fashion" 中的文件路径传递给 aws-cli 吗?

好吧,喝完咖啡回来后我发现在生成文件列表时,grep 命令为输出着色,所以在匹配前后插入了一些颜色代码。

我没有看到这些颜色代码,因为我的终端配置。使用 hexdump(或其他编辑器)检查文件,很明显颜色代码混淆了路径。

解决方案:grep --color=no 在我的列表生成脚本中。

我的错!