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

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.