默認情況下,擊識別陣列值由空白字符分隔。 它包含一個名爲IFS
的變量和分隔符,如果您想更改它,則必須更改此變量。 常規工藝是:將這種變種的舊值,改變它,處理數據,並恢復它:
OFS=$IFS
# for new line there is special var: $'\n'
IFS=$'\n'
#your code here
IFS=$OFS
這樣你就可以改變IFS,讀取整個行作爲一個值,比用過程中它替代:https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
另一種選擇是使用awk
(該命令將打印主機和狀態):
docker node ls -f name=manager | awk '{print $2, $3}'
或優化您搜索和獲取的主機狀態爲n加時賽準備:
docker node ls -f name=manager | awk -F' '{if ($3 != "Ready") print $2}'
如果你只有一臺主機,就可以使用grep來打印,如果它發現與否:
docker node ls -f name=manager | grep -iq "not ready" && echo "Not found" || echo "Found"
或省略||echo "Found"
,如果你想打印一個錯誤信息只有
這不是我的Q.我不是試圖讀取命令的狀態,我試圖解析命令的輸出 – curiousengineer
@curiousengineer:我知道但我很確定'docker'會給你除READY之外的任何非零退出狀態'。但是,我已經提出了另一個適合您需求的解決方案。 – sjsam