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 10/05/2008, à 03:16

ayag

programmer avec bash

'ai eu de la misère a résoudre ce petit problème, programme doit chercher si un fichier existe puis il récupère le nom du l'image du fichier pour la pouvoir effacer voici mon bout de code ca marche pas je sais pas ou je me suis tromper, merci pour votre aide

#!/bin/bash

exist=`ls -l | grep 'suppr.txt' | wc -l`

if [ $exist -eq 1 ]
then

        read ligne<suppr.txt
        nom=`echo $ligne | cut -f 1 -d :`
        image=`echo $ligne | cut -f 2 -d :`
         if [ -n "$image" ]
         then
               cd /home/images
                read ligne<suppr.txt
                image=`echo $ligne | cut -f 2 -d :`
                existimage=`ls -l | grep $image | wc -l`
               if [ $existimage -eq 1 ]     
                then
                   sudo chmod 777 $image
                   sudo chown root $image
                   sudo chgrp root $image
                   sudo rm -Rf /home/images/'$image'
                fi
       fi
fi

Hors ligne

#2 Le 10/05/2008, à 05:56

PauseKawa

Re : programmer avec bash

cd /home/images ? (plutôt cd ~/Images/ non ?)

sudo dans un script ? Tu utilise le SUID ou sudoers ? Pourquoi tu passe ton image en root avant de rm ?

Pourquoi ne pas utiliser if test -e suppr.txt a la place de ton exist=`ls -l | grep 'suppr.txt' | wc -l` (ou -s)

Perso pour le read ligne j'utilise un for line in $(cat tonfichiers). Exemple :

for line in $(cat /home/users/perso/.autosauve/testsa)
    do
    HEURE="${line:3:2}"
    MINUTES="${line:0:2}"
    CALCULJOUR="${line:10:1}"
    case $CALCULJOUR in
    0) JOURS="le Dimanche" ;;
    1) JOURS="le Lundi" ;;
    2) JOURS="le Mardi" ;;
    3) JOURS="le Mercredi" ;;
    4) JOURS="le Jeudi" ;;
    5) JOURS="le Vendredi" ;;
    6) JOURS="le Samedi" ;;
    *) JOURS="tous les jours" ;;
    esac
    TEXTSAUV=$TEXTSAUV$IFS"Sauvegarde programmée ""$JOURS"" à ""$HEURE""H""$MINUTES"$IFS
done

Petit edit : En gros tu regarde si un fichier suppr.txt existe et s'il existe tu regarde dedans des noms de fichiers a supprimer, c'est bien cela ? Quelle est l'utilité des variables $nom et $image ? Quel est le format de ton fichier suppr.txt ?

Bonne journée

Dernière modification par PauseKawa (Le 10/05/2008, à 06:15)


L'informatique c'est écologique. Un exemple : Je commande sur internet le dernier calendrier Pirelli. Résultat ? J'ai économisé mes pneus, mon essence, et je n'ai pas émis de gaz si néfaste pour notre planète. Et de toute manière, le facteur serait quand même passé pour m'amener mes factures.

Hors ligne