Ich habe eine Methode in der Bash-Skript, das so etwas wie diesesgrep und schneiden Sie mit einem weiteren Leerzeichen
status=$(docker service ls|grep $1|cut -f7 -d' '| grep -w "1/1")
Der Wert $1=abc_mongodb1
oder $1=abc_mongodb2
und so weiter tut. Er sagt mir, wenn die Zeichenfolge 1/1
existiert, bedeutet dies, dass mein Dienst läuft. Das Problem tritt auf, wenn die Ausgabe von docker service ls
eine andere Anzahl von Leerzeichen hat, da die Namen der Dienste unterschiedlich lang sind. Wie kann ich das Trennzeichen im ausgeschnittenen Teil der Pipe angeben, um ein oder mehrere Leerzeichen zu verwenden? Die folgenden Arten von Ausgängen sind möglich
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`
Mein Schnittbefehl funktioniert gut in dem oben genannten. Es schlägt fehl, in dem unten stehenden Fall
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
Verwenden Sie 'awk' anstelle von' cut'. – codeforester