0 votes

La conversion d'une chaîne de caractères en int ne fonctionne pas correctement dans le terminal

La conversion d'une chaîne en int ne fonctionne pas correctement dans le terminal.

Je veux trouver combien de temps une chaîne spécifique se produit dans une grande chaîne.

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

résultat

ThreeOrMore

Mais le résultat devrait être TwoOrLess

mais la partie intérieure fonctionne bien

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

résultat

1

1voto

nohillside Points 82672

Vous ne pouvez pas utiliser > pour comparer des nombres dans bash ( > est utilisé pour rediriger la sortie vers un fichier), vous devez exécuter la comparaison dans le cadre d'une commande test / [ commande. De même, l'appel à bc ne semble rien faire, echo "iOS/i" | grep -o iOS | wc -l sort déjà 1 .

L'extrait mis à jour se présente comme suit (divisé en plusieurs lignes pour une meilleure lisibilité) :

if [ $(echo "iOS/i" | grep -o iOS/ | wc -l) -gt 2 ]; then
    echo "ThreeOrMore"
else
    echo "TwoOrLess"
fi

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X