Das Konvertieren von Zeichenfolgen in int funktioniert im Terminal nicht ordnungsgemäß

0

Das Konvertieren von Zeichenfolgen in int funktioniert im Terminal nicht ordnungsgemäß.

Ich möchte herausfinden, wie viel zeitspezifische Zeichenfolge in einer großen Zeichenfolge vorkommt.

if ((echo "iOS/i" | grep -o iOS/ | wc -l | bc)>2) then echo "ThreeOrMore"; else echo"TwoOrLess"; fi

Ergebnis

ThreeOrMore

Aber das Ergebnis sollte eigentlich TwoOrLess sein

aber der innere Teil funktioniert gut

echo "iOS/i" | grep -o iOS | wc -l | bc

Ergebnis

1
Voloda2
quelle

Antworten:

1

Sie können >Zahlen in nicht vergleichen bash( >um die Ausgabe in eine Datei umzuleiten). Sie müssen den Vergleich als Teil eines test/ [-Befehls ausführen . Auch der Aufruf an bcscheint nichts zu tun, echo "iOS/i" | grep -o iOS | wc -lgibt schon aus 1.

Das aktualisierte Snippet sieht folgendermaßen aus (zur leichteren Lesbarkeit in mehrere Zeilen aufgeteilt):

if [ $(echo "iOS/i" | grep -o iOS/ | wc -l) -gt 2 ]; then
    echo "ThreeOrMore"
else
    echo "TwoOrLess"
fi
nohillside
quelle
1
Also | wc -l wird benötigt. Ich habe versucht, wc -l wegzulassen, aber dieser Ausdruck hat nicht 3 zurückgegeben: echo "iOS / iOS / iOS" | grep -o -c iOS
Voloda2
Ah, es sieht so aus, als hätte ich gerade etwas gelernt. Danke, ich werde die Antwort entsprechend bearbeiten.
Nohillside