Forum Programmation.shell Résultat d'une commande dans une variable

Posté par  .
Étiquettes : aucune
0
12
mar.
2007
Bonjour ;

J'ai un script qui fait cela :
#!/bin/sh
for i in $(ls *.); do
resultat =$(ripmime -i $i -d /var/tmp/scantomail -q --verbose-contentype)

echo $resultat
done

Et quand je le lance, il me met des warning pour chaque ligne avec : resultat : command not found

Désolé pour le béaba de catte question mais il faut bien débuter un jour.

Merci par avance ;

Aymeric
  • # Mes 2 centimes

    Posté par  (site web personnel, Mastodon) . Évalué à 3.

    D'abord, pas d'espace avant & après le = en bash

    Ensuite, regarde de près la doc sur le backtick.

    La gelée de coings est une chose à ne pas avaler de travers.

    • [^] # Re: Mes 2 centimes

      Posté par  . Évalué à 2.

      Bonjour ;

      Meci pour la réponse, cela marche.

      J'abuse un peu mais j'ai une question subsidiaire :

      la 1ère commande me fournit ce résultat :
      Decoding content-type=multipart/mixed filename=textfile0 Decoding content-type=text/html filename=textfile1 Decoding content-type=application/pdf filename=test.pdf Decoding content-type=application/pdf filename=Copie de test.pdf
      Decoding content-type=multipart/mixed filename=textfile0 Decoding content-type=text/plain filename=textfile1 Decoding content-type=text/html filename=textfile2 Decoding content-type=application/pdf filename=Copie de test.pdf

      Je voudrais récpérer au niveau du dernier filename, le nom du fichier sans le .pdf et à partir de cette sous-chaîne récupérer la chaîne qui démarre au 1er caractère jusqu'au 1er _ trouvé (mon exemple n'est pas bon car il n'a pas de _ :))

      Est-ce que vous auriez une idée ?

      Merci ;

      Aymeric
      • [^] # Re: Mes 2 centimes

        Posté par  . Évalué à 2.

        $ variable="blabla filename=textfile0 blabla filename=textfile1 blabla filename=test_ok.pdf"; \
        variable=${variable##*filename=}; echo ${variable}; \
        variable=${variable%%.*}; echo ${variable}; \
        variable=${variable%%_*}; echo ${variable}
        test_ok.pdf
        test_ok
        test
        
        Dans le manuel de bash, tu recherches : ##
        • [^] # Re: Mes 2 centimes

          Posté par  . Évalué à 2.

          Bonjour ;

          Merci beaucoup pour les éléments. Je vais tester cela demain.

          Encore merci et bonne soirée.

          Aymeric
          • [^] # Re: Mes 2 centimes

            Posté par  . Évalué à 1.

            Bonjour ;

            Ca marche super bien. Avec ces substitutions, comment peut-on gérer les erreurs.

            J'ai parfois sur cette adresse email, des fichiers qui ne suivent pas cette nomenclature et du coup, cela fait planter mon script.

            J'ai essayé de mettre un if pour tester la validité de la substitution avec de la faire mais je n'y arrive pas.

            Comment via un if je peux tester que l'extraction de la sous-chaîne marche bien pour continuer toutes les substitutions ou sortir du script si mon fichier ne suit pas le même formattage de nom ?

            Merci ;

            Aymeric
          • [^] # Re: Mes 2 centimes

            Posté par  . Évalué à 1.

            Bonjour ;

            Ca marche parfaitement. Par contre, il m'arrive d'avoir des fichiers qui ne suivent pas la nomenclature et du coup cela fait planter mon script.

            Comment via un if je peux tester que l'extration de la sous-chaine marche bien ou sortir de la boucle sinon ?

            Merci ;

            Aymeric
            • [^] # Re: Mes 2 centimes

              Posté par  . Évalué à 1.

              Et bien, si l'extraction n'a pas fonctionné, la valeur de la variable n'est pas modifiée par rapport à la ligne précédente. Ne suffit t'il pas de faire une comparaison de strings ?
              • [^] # Re: Mes 2 centimes

                Posté par  . Évalué à 1.

                Après moultes manips, mon script est terminé et semble pas trop mal fonctionné d'après les tests :

                #!/bin/sh
                for i in $(ls *.); do
                resultat=$(ripmime -i $i -d /var/tmp/scantomail -v --verbose-contenttype --no-doublecr --overwrite )
                if [ "${resultat##*filename=}" != "" ];
                then
                resultat=${resultat##*filename=}
                if [ "${resultat%%.*}" != "" ];
                then
                resultat=${resultat%%.*}
                if [ "${resultat%%_*}" != "" ];
                then
                resultat=${resultat%%_*}
                nbcaracteres=$(echo $resultat | wc -m)
                if [ "$nbcaracteres" = "10" ] ;
                then

                repe=$(ls -d /home/partage/Clients/$resultat*)


                if [ "$repe" = "" ];
                then
                mkdir /home/partage/Clients/$resultat
                cp /var/tmp/scantomail/$resultat*.pdf /home/partage/Clients/$resultat/
                rm -f /var/tmp/scantomail/$resultat*.pdf
                rm -f /var/tmp/scantomail/*
                mv $i ./traites/$i
                #echo "repertoire a creer"
                #echo $nbcaracteres
                else

                # echo "/var/tmp/scantomail/"$resultat"*.pdf"
                # repe="/var/tmp/scantomail/cible/"
                cp /var/tmp/scantomail/$resultat*.pdf $repe/
                rm -f /var/tmp/scantomail/$resultat*.pdf
                rm -f /var/tmp/scantomail/*
                mv $i ./traites/$i
                #echo "repertoire existant"
                #echo $nbcaracteres
                fi
                # Je reconstruis la BAL pour mettre à jour les dossiers
                su - cyrus -c "/usr/sbin/cyrreconstruct -r user/scantomail"
                su - cyrus -c "/usr/sbin/cyrreconstruct -f user/scantomail"
                fi
                else
                exit
                fi
                else
                exit
                fi
                else
                exit
                fi
                #echo $resultat
                #echo $i
                done

                La dernière chose à faire reste à transférer les emails ne contenant pas de pièces jointes intéressantes sur une autre BAL.

                Mille mercis pour l'aide.

                Aymeric.

                PS : ce script a pour but d'automatiser la mise à disposition de fichiers à mes utilisateurs sans devoir ouvrir la BAL dédié à l'envoi des fichiers clients.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.