Bonjour,
je suis sur un script qui fait une recherche dans un répertoire un peu spéciale, je m'explique :
à partir d'une chaine de caractères entré en argument (./script chaine1 chaine2 chaine3 ), le script cherche dans un répertoire les chaines correspondante à un fichier existant. (par exemple : il retourne "la chaine correspondante est : chaine1 chaine3")
au départ c'est quelque chose de simple en utilisant la commande ls | grep
donc : ls | grep chaine1 | grep chaine2
si chaine2 est introuvable il reviens en arrière et replace "| grep chaine2" par "| grep chaine3"
et bein ça marche pas, mon problème (je pense ) qu'il est dans l'exécution de la commande ls | grep ...
voici le script :
#!/bin/bash
cd /documents
cmd="| grep $1 "
var="$1"
shift
cmdBk="$cmd"
while [ $# -ne  0 ]
        do
                #exec de la commande composée
                ls "$cmd"
                if [[ $? -eq 0 ]]
                  then
                        var+=" "$1
                        cmdBk="$cmd"
                        shift
                        cmd+="| grep $1"
                else
                        cmd="$cmdBk"
                        shift
                fi
        done
echo "la chaine correspondante est : $var"
./script doc fr eng electrique
ls: | grep doc : Aucun fichier ou répertoire de ce type

Merci pour votre aide
Bonjour,

utlise la commande « eval » pour interpréter une chaîne comme une commande :
« eval ls $cmd » au lieu de « ls $cmd » (sans quoi ls considère $cmd comme un fichier/répertoire, d'où l'erreur).
Merci beaucoup !!! ça marche bien avec eval ls $cmd
il me reste juste à voir l'algorithme
encore merci :hammer: