J'ai une question sur la commande de test dans KornShell (ksh). Je sais -ne
est pour comparer des entiers et !=
est pour comparer des chaînes. Comment la commande de test va-t-elle se comporter si un argument est une chaîne et l'autre est un entier? J'ai les conditions ci-dessous dans mon code et les deux fonctionnent correctement.commande de test dans KornShell (ksh)
code:
myCount=1
myCount=`expr $myCount+ 0`
temp=`ps -aef | grep damn | wc -l`
if [ $temp -ne $myCount]; then
echo ERROR Number
fi
if [ $temp != $myCount ]; then
echo ERROR Strings
fi
Sortie:
ERROR Number
ERROR Strings
Voulez-vous dire, si [$ temp -eq $ myCount]; then echo ERROR Strings affiche toujours le message tant que la valeur de temp n'est pas numérique. –
Pas tout à fait, voir la mise à jour. Si le nombre _starts_ comme un numérique mais contient des non-numériques, il va erreur. Pour une variable qui ne commence pas numeric, elle est traitée comme 0. – paxdiablo
Sur mon shell, $ export s1 = xyz $ export s2 = 7xyz $ export i1 = 0 $ si [$ i1 -eq $ s1]> alors> echo égal > fi $ xyz: mauvais –