只想將 kubectl 命令的輸出保存在 Bash 腳本的變數中。
例如:命令kubectl get all -n mattermost輸出No resources found in mattermost namespace.
foo=$(kubectl get all -n mattermost)
while [ "$foo" = "No resources found in mattermost namespace." ]
do
echo "yay"
done
不幸的是,輸出不會保存在變數中。
uj5u.com熱心網友回復:
對于“未找到資源....”之類的訊息,它是在 stderr 中列印的。要糾正此問題,您可以將行修改為
foo=$(kubectl get all -n mattermost 2>&1)
uj5u.com熱心網友回復:
你的腳本有兩個問題......
- 您描述的問題是因為它是您嘗試捕獲的錯誤訊息,但您只能捕獲正常的按摩。Bash 和其他 Shell 使用stdin stdout和stderr進行訊息傳遞。使用您的命令,變數將僅捕獲stdout。
- 2 = 標準錯誤
- 1 = 標準輸出
- 0 = 標準輸入
- & = 意味著有些人喜歡將這個添加到那個
- < > = 去哪里使用 stdxxx
應該更像是...
foo=$(ANY COMMAND 2>&1)
- 當您運行腳本時,它將首先創建該變數,然后回圈將是無限的,因為該變數沒有更改。相反,您可以擺脫該變數并將其放入您的回圈中。
while [ "$(kubectl get all -n mattermost 2>&1)" = "No resources found in mattermost namespace." ]; do
echo "Hello World"
done
這樣你的回圈就會在stderr或stdout改變時停止。還有停止與一個回圈的可能性break或停止腳本return或exit(取決于你將如何運行腳本)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/323978.html
