ACR清理任务执行acr purge命令时出现语法错误求助
问题解答
第一个错误:-bash: !latest: event not found
这是bash基础问题,和Azure CLI无关。bash中!默认是历史扩展符,用于调用之前执行过的命令。当你直接输入!latest时,bash会尝试查找以latest开头的历史命令,找不到就会触发该错误。
解决方法:
- 用单引号包裹包含
!的正则表达式,单引号会屏蔽bash的特殊字符解析:'^(?!latest).*' - 或者临时关闭历史扩展:执行
set +o histexpand后再运行命令,之后可通过set -o histexpand恢复默认行为。
第二个错误:-bash: syntax error near unexpected token '('
这同样是bash的语法解析问题,不是Azure CLI不支持负向前瞻正则。当使用(?!latest)这类正则语法时,如果未用引号正确包裹,bash会把(当成命令分组的起始符号,从而抛出语法错误。
正确的acr purge命令示例(排除latest标签):
az acr purge --registry <你的ACR名称> --filter '<仓库名>:^(?!latest).*' --ago 7d --yes
核心是用单引号把过滤器表达式整体包裹,避免bash解析其中的特殊字符(!、(、))。
补充说明:Azure CLI的acr purge支持PCRE风格的正则,负向前瞻可以正常使用,只要通过引号规避bash的特殊字符解析即可。
内容的提问来源于stack exchange,提问作者AnjK
相关产品推荐
相关产品推荐

