Encore un petit souci dans mon script : dans certains cas quand le serveur n’existe pas j'ai une erreur qui apparaît à l'écran :
Test n°13 / 91 Stella Telecom - Courbevoie : 2189 Mb/s - 3 ms
Test n°14 / 91 Ozone - Courbevoie : 290 Mb/s - 3 ms
Test n°15 / 91 Scaleway/Online- Vitry/Seine./comp-speedtest.sh: ligne 20 : [: ERROR: No matched servers: 5022 : nombre entier attendu comme expression
./comp-speedtest.sh: ligne 23: ERROR: No matched servers: 5022/1000000 : erreur de syntaxe dans l'expression (le symbole erroné est « : No matched servers: 5022/1000000 »)
Test n°16 / 91 TestDebit.info - Massy : 6131 Mb/s - 1 ms
Test n°17 / 91 Orange - Lyon : 1989 Mb/s - 10 ms
Voici le fichier .csv correspondant :
14821,Stella Telecom,Courbevoie,2019-01-29T15:59:29.370026Z,3.84,2189251675.1414304
11644,Ozone,Courbevoie,2019-01-29T15:59:31.126164Z,3.515,290151149.63092244
ERROR: No matched servers: 5022
2231,TestDebit.info,Massy,2019-01-29T15:59:41.612295Z,1.596,6131316465.165352
4273,Orange,Lyon,2019-01-29T15:59:42.392964Z,10.762,1989638792.0900528
Dans le code, la ligne 20 correspond à la ligne if [ "$debit" -ge 1000000 ]; 2>/dev/null qui a pour but de ne pas aller plus loin si la chiffre n'est pas > 1000000.
Comment écrire ça pour que si ce n'est pas un chiffre la condition ne soit pas remplie sans erreur ?
La fonction :
speedtest ()
{
speedtest-cli --no-upload --csv --timeout 1 --secure --server $1 2>&1 | cut -d',' -f 1,2,3,4,6,7 >>${FILE_LOG} 2>/dev/null
resultat=$(tail -n1 ${FILE_LOG}) 2>/dev/null
debit=$(echo $resultat | cut -d',' -f 6 | cut -d'.' -f 1) 2>/dev/null
if [ "$debit" -ge 1000000 ]; 2>/dev/null
then
latence=$(echo $resultat | cut -d',' -f 5 | cut -d'.' -f 1) 2>/dev/null
echo ": $(($debit/1000000)) Mb/s - $latence ms"
else
echo ": Échec du test" 2>/dev/null
fi
}