#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.
En 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.
En 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
… 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
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.
En ligne
#11 Le 28/07/2022, à 18:28
- MixT
Re : Bash esrreur : [: too many arguments
Merci beaucoup !
Hors ligne