を行うだろう、バッシュは、配列を認識し、以下の、あなたは出力の2行を取得すると仮定すると値は空白文字で区切ります。 セパレータにはIFS
という変数があり、変更したい場合はこの変数を変更する必要があります。 定期的なプロセスは以下のとおりです。このVARの古い値を格納し、それを変更し、プロセスデータとそれを復元:
OFS=$IFS
# for new line there is special var: $'\n'
IFS=$'\n'
#your code here
IFS=$OFS
SOあなたがそれを、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}'
OR絞り込むあなたは状況がnであることをホストを検索し、取得しますOT準備:あなたは1つのホストだけを持っている場合は
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"
を省略しますが、エラーメッセージを印刷したい場合
私はこのコマンドのステータスを読み取ろうとしていません。コマンドの出力を解析しようとしています。 – curiousengineer
@curiousengineer:私は知っていますが、 'docker'があなたに与えるだろう'READY以外のものについてはゼロ以外の終了ステータス'。しかし、私はあなたの要件に合った別のソリューションを用意しました。 – sjsam