Oui, ça me revient, le ‘!’ c’est la négation.
Et du coup, c’est beaucoup plus clair avec le ‘!=’, en effet.
Je suis sottttttttttttttttttttt !
[quote]Fait ausi attention :
dans test (alias [) = et != sont pour comparer les chaines de caractère,
pour les comparaisons arithmétiques c’est -eq, -ne, -gt etc…[/quote]
oui, ça je l’ai vu et j’ai retenu (enfin j’espère )
Oui, j’ai choisi ~/bin pour y loger mes futurs exploits et après la commande donnée par Mister, je suis bien dans le PATH, donc prog.sh démarre directement.
Pour en revenir à ma question précédente, j’ai dû mal m’exprimer voici donc un exemple plus complet :
[code]#!/bin/bash
moi=ricardo # définition d’une variable texte
read -p "entrez votre nom : " nom
if [$nom = $moi ]; then
echo "blabla"
else
etc.[/code]
Je sais que l’on peut faire autrement et plus simplement mais je voudrais quand même savoir s’il est possible, au lieu de n’avoir qu’un seul choix (ricardo), d’en avoir plusieurs pour la MÊME variable : $moi
Donc, shématiquement :
moi=ricardo ou RICARDO ou Ricardo
et qui si on entre un de ces trois noms, ça “passe”
Hem, sauf si ta variable est une liste à ce moment là tu fais:
#!/bin/bash
moi=( ricardo RICARDO Ricardo ) # définition d'une liste de plusieurs valeurs
read -p "entrez votre nom : " nom
for $test in $moi; do
if [ $test == $nom ];then
echo "blabla"
else
echo "other"
fi
done
sinon tu ne peux pas.
Il y a encore une autre solution:
#!/bin/bash
read -p "entrez votre nom : " nom
if [ $nom = Ricardo || $nom = RICARDO || $nom = ricardo ]; then
echo "blabla"
else
echo "other"
fi
read -p "entrez votre nom : " nom
if [ $nom = Ricardo || $nom = RICARDO || $nom = ricardo ]; then
echo "blabla"
else
echo "other"
fi
[/code][/quote]
On peut aussi utiliser un ‘case’ dans ces conditions :
read -p "entrez votre nom : " nom
case "$nom" in
Ricardo|RICARDO|ricardo) echo "blabla" ;;
*) echo "other";;
esac
Au passage je rappelle qu’il faut être très vigilant à l’expansion de variable shell quand il y a des espaces,
et mettre “$VAR” à la place de $VAR est souvent une bonne idée .
read -p "entrez votre nom : " nom
if echo $nom | grep -iq “^ricardo$”; then
echo "blabla"
else
echo "other"
fi[/code]
Et là tu n’a aucun problème de casse tout est géré.
read -p "entrez votre nom : " nom
if echo $nom | grep -iq “^ricardo$”; then
echo "blabla"
else
echo "other"
fi[/code]
Et là tu n’a aucun problème de casse tout est géré.[/quote]
Celle-là, je la retiens, ça me semble être la plus pratique dans ce genre d’erreurs possibles.
Je vais la tester. J’ai fait comme Gérard le préconise, un prog “essai.sh”, sur mon autre machine, c’est pratique car le fichier est déjà présent et exécutable.
Ce n’est pas que je fasse un prog mais je me renseigne quand je pense à quelque chose pour essayer de m’en souvenir, le moment venu :smt002
[quote]-q, --quiet, --silent
Ne pas afficher les résultats normaux. Sortir immédiatement avec un code de retour égal à zéro dès qu’une concordance est trouvée, même si une erreur est détectée. Voyez aussi l’option -s ou --no-messages. (-q est spécifiée dans POSIX)[/quote]