我想了解以下命令是如何工作的,以及支持什么类型的表达式:
kubectl label pod foo{1..3} fizz=buzz
foo{1..3}
选择:
foo1
foo2
foo3
到目前为止,我找不到任何文档。
该语法是GNU Bash大括号扩展语法。其他一些shell(如zsh(也支持它,但它不是POSIX shell规范中的Word扩展之一;它不适用于一些极简主义的shell,比如Debian GNU/Linux中的默认dash shell或Alpine Docker映像中的Busybox shell。
这意味着它由本地shell进行扩展,以构造kubectl
的参数。大多数扩展可能性都集中在文件名或环境变量上。(foo*
将匹配名称以foo
开头的本地文件,而不是Kubernetes pods。(您可能会发现$(command)
替换或$(( 1 + 2 ))
算术替换很有用。这里没有使用任何更广泛的Kubernetes名称匹配语法,这只是本地shell处理。