kubernetes `--dry-运行=client` 和 `--command` 以一种奇怪的方式依赖于命令的排序
kubernetes `--dry-run=client` with `--command` depends on ordering of commands in a weird way
我发现使用 --dry-run=client
创建 yaml 对象描述并提供 --command
仅在提供的参数按非常特定的顺序排列时才有效。
这个有效:
k run nginx --image=nginx --restart=Never --dry-run=client -o yaml --command -- env > nginx.yaml
这不是:
k run nginx --image=nginx --restart=Never --command -- env --dry-run=client -o yaml > nginx.yaml
我觉得有点困惑,因为对我来说,不起作用的版本比起作用的版本直观得多。理想情况下,我认为两者都应该有效。这是有意的行为吗?我找不到任何关于它的文档。
--
之后的所有内容都是位置参数(直到 >
是 shell 元字符),而不是选项。
Ideally both should work in my opinion.
很遗憾,您提供的命令并不相同。他们也永远不会以同样的方式工作。这是正确的行为。 Double dash (--
) 在这里特别重要:
a double dash (--
) is used in most Bash built-in commands and many other commands to signify the end of command options, after which only positional arguments are accepted.
所以你不能随意交换“参数”的地方。只有这几个选项可以自由设置
--image=nginx --restart=Never --dry-run=client -o yaml --command
然后你有 -- env
(双破折号、space 和另一个命令)。在 --
(双破折号和 space)之后只接受位置参数。
此外,>
是 shell 元字符以设置 redirection。
我发现使用 --dry-run=client
创建 yaml 对象描述并提供 --command
仅在提供的参数按非常特定的顺序排列时才有效。
这个有效:
k run nginx --image=nginx --restart=Never --dry-run=client -o yaml --command -- env > nginx.yaml
这不是:
k run nginx --image=nginx --restart=Never --command -- env --dry-run=client -o yaml > nginx.yaml
我觉得有点困惑,因为对我来说,不起作用的版本比起作用的版本直观得多。理想情况下,我认为两者都应该有效。这是有意的行为吗?我找不到任何关于它的文档。
--
之后的所有内容都是位置参数(直到 >
是 shell 元字符),而不是选项。
Ideally both should work in my opinion.
很遗憾,您提供的命令并不相同。他们也永远不会以同样的方式工作。这是正确的行为。 Double dash (--
) 在这里特别重要:
a double dash (
--
) is used in most Bash built-in commands and many other commands to signify the end of command options, after which only positional arguments are accepted.
所以你不能随意交换“参数”的地方。只有这几个选项可以自由设置
--image=nginx --restart=Never --dry-run=client -o yaml --command
然后你有 -- env
(双破折号、space 和另一个命令)。在 --
(双破折号和 space)之后只接受位置参数。
此外,>
是 shell 元字符以设置 redirection。