我正在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的新手,因此非常感谢您的帮助。谢谢。