kubectl create secret docker-registry $SECRET_NAME
--dry-run=client
--docker-server="$ECR_REGISTRY"
--docker-username=AWS
--docker-password="$(</token/ecr-token)"
-o yaml
文件token/ecr-token已到位,但仍无法填充——docker-password
$(< /path/to/a/file)
语法是一种特殊形式的命令替换,由几个UNIX shell支持,包括ksh (Oracle在线文档)、bash和zsh。它尝试打开列出的文件,然后读取该文件的内容,以取代$(< ...)
。它不同于命令替换,因为它不执行给定的文件或其内容。
查看此UNIX &Linux Q/A:理解Bash的Read-a-File命令替换
请注意,您的命令指定了/token/ecr-token
的绝对文件路径,但随后描述了token/ecr-token
的相对路径。如果在命令行中使用相对路径,则该文件需要相对于当前工作目录存在。当然,文件的内容必须是当前用户可读的。
如果您的shell不支持此特性,一个解决方法是使用$(cat /path/to/a/file)
,例如:
kubectl create secret docker-registry "$SECRET_NAME"
--dry-run=client
--docker-server="$ECR_REGISTRY"
--docker-username=AWS
--docker-password="$(cat /token/ecr-token)"
-o yaml