【发布时间】:2022-01-26 12:37:38
【问题描述】:
我正在尝试使用/理解 xargs 来打印我在 kubernetes 中跨不同命名空间运行的一些 pod 的各种详细信息。例如。该命令给出:
$ kubectl get pods -A | grep Error | awk '{print $2 " -n=" $1}'
my-pod-kf8xch6y-qc6ms-k6ww2 -n=my-ns
my-pod-kf8xlg64-g0ss7-mdv1x -n=my-ns
my-pod-kldslg64-polf7-msdw3 -n=another-ns
这是正确/预期的。
当我将xargs 添加到上述命令时,我得到:
$ kubectl get pods -A | grep Error | awk '{print $2 " -n=" $1}' | xargs kubectl $1 get pod $0 -oyaml | grep phase
Error from server (NotFound): pods "bash" not found
phase: Failed
phase: Failed
这实际上是预期的输出,但我不明白
Error from server (NotFound): pods "bash" not found
为什么bash 被传递给xargs?
【问题讨论】:
-
我不确定,但我认为参数
$0是从您正在使用的 shell 分配的完整命令的第一部分。如果您使用zsh,它会说,而不是bash。在控制台echo $0上试试看我的意思。 Bash 将bash放入$0。 -
你是对的,打印 $0 表明第一个值是
bash。但是如何将 awk 的两个输出作为单独的参数传递给 xargs? -
你想运行什么命令?