status=$(docker service ls|grep $1|cut -f7 -d' '| grep -w "1/1")
値$1=abc_mongodb1
または$1=abc_mongodb2
などのような何かをするのbashスクリプト内のメソッドを持っています。文字列1/1
が存在すると、それは私のサービスがアップしていることを意味します。サービスの名前の長さが異なるため、docker service ls
の出力に異なる数のスペースがあると問題が発生します。 1つまたは複数のスペースを使用するようにパイプのカット部分のデリミタにどのように伝える必要がありますか。次の種類の出力が可能です。
Output of type1
`ID NAME MODE REPLICAS IMAGE
fw2qdrh38oeq abc_mongodb2 replicated 1/1 mongo:3.4
l9mvn0wvqaxy abc_mongodb1 replicated 1/1 mongo:3.4
pfjlpa29yb59 abc_mongodb3 replicated 1/1 mongo:3.4`
上記の場合、My cutコマンドは正常に動作します。これは、以下の場合には優雅に繰り返されるスペースを扱う
Output of type 2(failure case)
ID NAME MODE REPLICAS IMAGE
45uhn1au50ue abc_deltaservice replicated 1/1 abc-deltaservice:latest
cubbmpw657ib abc_mongodb1 replicated 1/1 mongo:3.4
gil4c53jrvyc abc_mongodb2 replicated 1/1 mongo:3.4
hy9ooec4rapd abc_executionengine replicated 1/1 abc-executionengine:latest
vocsigy76ab0 msc_mongodb3 replicated 1/1 mongo:3.4
ze4jg0f2y0jt abc_kongdb replicated 1/1 postgres:9.4
'cut'の代わりに' awk'を使います。 – codeforester