在bash脚本的变量中获取kubectl命令错误消息

时间:2019-12-11 21:57:09

标签: bash shell

我正在bash脚本中执行kubectl命令,并将输出存储在变量中。当kubectl命令成功执行时,我在变量中获得了正确的输出,但是当它未成功执行时,变量为空并且错误消息不可用。我希望将错误值存储在变量中。

示例:

GET_PODS_COMMAND="$(kubectl get pods -n mlsh-$JOBNAMESPACE --selector app=$POD_SELECTOR --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')" #kubectl command. Please assume mlsh-$JOBNAMESPACE and $POD_SELECTOR have correct values
GET_PODS_COMMAND_OUT=$GET_PODS_COMMAND 
echo $GET_PODS_COMMAND_OUT #Printing command result

命令执行成功后,我在GET_PODS_COMMAND_OUT中获得吊舱名称,但是当命令输出为“找不到资源”时,GET_PODS_COMMAND_OUT的值为空白。

我读到我必须按照以下文章中所述将stderr重定向到stdout: Bash how do you capture stderr to a variable? https://www.reddit.com/r/kubernetes/comments/98s8v6/why_cant_i_store_outputs_of_kubectl_commands_in_a/

仍然努力地了解如何准确地实现这一目标。 这是我尝试过的:

GET_PODS_COMMAND_OUT="$(GET_PODS_COMMAND 2>&1)" #gives the error:  GET_PODS_COMMAND: command not found

是Linux的新手,因此非常感谢您的帮助。谢谢。

0 个答案:

没有答案