La conversione di string in int non funziona correttamente nel terminale

0

La conversione di string in int non funziona correttamente nel terminale.

Voglio scoprire quanto tempo si verifica una stringa specifica in una grande stringa.

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

risultato

ThreeOrMore

Ma in realtà il risultato dovrebbe essere TwoOrLess

ma la parte interna funziona bene

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

risultato

1
    
posta Voloda2 04.04.2015 - 16:44
fonte

1 risposta

1

Non puoi usare > per confrontare i numeri in bash ( > è usato per reindirizzare l'output in un file), devi eseguire il confronto come parte di un comando test / [ . Anche la chiamata a bc non sembra fare nulla, echo "iOS/i" | grep -o iOS | wc -l produce già 1 .

Lo snippet aggiornato è simile a questo (diviso su più righe per facilitare la leggibilità):

if [ $(echo "iOS/i" | grep -o iOS/ | wc -l) -gt 2 ]; then
    echo "ThreeOrMore"
else
    echo "TwoOrLess"
fi
    
risposta data 04.04.2015 - 16:59
fonte

Leggi altre domande sui tag