Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/07/2022, à 11:31

MixT

Bash esrreur : [: too many arguments

Bonjour !

liste="video1 video2 video3"

if [ -e "video2" in $liste ]; 
then
	echo "video2 existe"
else
	echo "video2 n'existe pas"  	

fi

Retour

./test_condition.sh: line 5: [: too many arguments
video2 existe

J'obtiens la bonne réponse, mais j'obtiens aussi un message d'erreur
Est-ce que vous voyez où ça peut bloqué ?

Hors ligne

#2 Le 28/07/2022, à 12:50

Watael

Re : Bash esrreur : [: too many arguments

cette syntaxe n'existe pas en shell.
l'option -e teste si le fichier (et son chemin, par défaut le répertoire courant) passé en argument existe dans l'arborescence du système de fichier.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 28/07/2022, à 13:13

MixT

Re : Bash esrreur : [: too many arguments

L'idée est de faire le test. Quelle synthase me conseillerais tu ??

Hors ligne

#4 Le 28/07/2022, à 13:57

Tawal

Re : Bash esrreur : [: too many arguments

Je pense que le meilleur conseil serait de te proposer de la lecture sur la "programmation" en bash.
Par exemple :
https://abs.traduc.org/abs-fr/
https://frederic-lang.developpez.com/tu … rog-shell/
https://ineumann.developpez.com/tutorie … pratiques/
C'est déjà pas mal pour commencer.


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#5 Le 28/07/2022, à 14:07

Watael

Re : Bash esrreur : [: too many arguments

pour être compréhensible :

echo "$liste" | grep -q 'video4'

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#6 Le 28/07/2022, à 14:14

pingouinux

Re : Bash esrreur : [: too many arguments

Bonjour,
Si les noms de fichiers ne contiennent pas d'espaces

for f in $liste;do [ -e "$f" ] && echo "$f existe" || echo "$f n'existe pas";done

Mais tu testes tous les fichiers de la liste.

Hors ligne

#7 Le 28/07/2022, à 15:33

MixT

Re : Bash esrreur : [: too many arguments

Merci pingouinux

Est-ce que de manière indentée cela donne quelque chose comme ça :

for f in $liste;do
    if [ -e "$f" ] && ; then 
        echo "$f existe"
    else
        echo "$f n'existe pas";
    fi
done

Car du coup je n'ai plus les pip

Hors ligne

#8 Le 28/07/2022, à 15:45

MicP

Re : Bash esrreur : [: too many arguments

Dans son message #4, Tawal a écrit :

… la lecture sur la "programmation" en bash. …

J'ajoute à la liste l'excellente Introduction à la programmation en Bash (très récemment mise à jour par son auteur : Eric Sanchis)
et si vous avez, comme moi, des yeux trop sensibles à la lumière, en voilà une copie intégrale (dont j'ai modifié la feuille css)

Dernière modification par MicP (Le 28/07/2022, à 16:20)

Hors ligne

#9 Le 28/07/2022, à 15:49

pingouinux

Re : Bash esrreur : [: too many arguments

MixT #7 a écrit :
for f in $liste;do
    if [ -e "$f" ] && ; then 
        echo "$f existe"
    else
        echo "$f n'existe pas";
    fi
done

La deuxième ligne doit être

   if [ -e "$f" ]; then

Hors ligne

#10 Le 28/07/2022, à 16:38

Watael

Re : Bash esrreur : [: too many arguments

les deux barres verticales ne sont pas un pipe, c'est un OU logique;
comme &&, qui, contrairement, est un ET logique.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#11 Le 28/07/2022, à 18:28

MixT

Re : Bash esrreur : [: too many arguments

Merci beaucoup !

Hors ligne