[shell] comparaison chaine de caractère
yakuzayang
Messages postés
6
Statut
Membre
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,
j'ai un projet a faire en shell; la création d'une base de donnée.
La je dois créer la fonction qui prend en ligne de commande un truc du style:
delete from table2 where col2 > val2
c'est a dire qui supprime de la table2 toute les lignes ou dans la colonne2 la valeur est > val2
le problème c'est pour les chaîne de caractères. comment je peux comparer 2 chaînes de caractères avec un > et un < ? dans un sens sa a un "sens" au niveau de l'ordre alphabétique
visiblement le shell ne fait pas la comparaison.
j'ai essayer sur un script d'essai de faire
c1="a" c2="b"
if [ "$c1" < "$c2" ] ; then
echo "1"
fi
if [ "$c1" > "$c2" ] ; then
echo "2"
fi
et sa me renvoi 1 et 2 Lol?
comment faire?
j'ai un projet a faire en shell; la création d'une base de donnée.
La je dois créer la fonction qui prend en ligne de commande un truc du style:
delete from table2 where col2 > val2
c'est a dire qui supprime de la table2 toute les lignes ou dans la colonne2 la valeur est > val2
le problème c'est pour les chaîne de caractères. comment je peux comparer 2 chaînes de caractères avec un > et un < ? dans un sens sa a un "sens" au niveau de l'ordre alphabétique
visiblement le shell ne fait pas la comparaison.
j'ai essayer sur un script d'essai de faire
c1="a" c2="b"
if [ "$c1" < "$c2" ] ; then
echo "1"
fi
if [ "$c1" > "$c2" ] ; then
echo "2"
fi
et sa me renvoi 1 et 2 Lol?
comment faire?
A voir également:
- [shell] comparaison chaine de caractère
- Classic shell - Télécharger - Personnalisation
- Caractère spéciaux - Guide
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Comparaison million milliard - Accueil - Technologies
1 réponse
Salut,
Effectivement, en shell on ne peut comparer 2 chaînes que sur leur longueur (= ou != de 0) ou sur leur contenu (chaineA = ou != de chaineB), mais pas sur leur ordre de grandeur (alphabétiquement parlant tout au moins, numériquement parlant c'est faisable).
Pour ce que tu veux faire, il te faudrait extraire toutes les valeurs contenues dans le champ 2, y inclure si besoin ta valeur de référence, les trier (sort), éliminer les redondances (uniq), et ensuite à l'aide d'une boucle, éliminer tout ce qui est avant (ou après) ta valeur de référence...
Effectivement, en shell on ne peut comparer 2 chaînes que sur leur longueur (= ou != de 0) ou sur leur contenu (chaineA = ou != de chaineB), mais pas sur leur ordre de grandeur (alphabétiquement parlant tout au moins, numériquement parlant c'est faisable).
Pour ce que tu veux faire, il te faudrait extraire toutes les valeurs contenues dans le champ 2, y inclure si besoin ta valeur de référence, les trier (sort), éliminer les redondances (uniq), et ensuite à l'aide d'une boucle, éliminer tout ce qui est avant (ou après) ta valeur de référence...