J'ai écrit un petit programme qui liste les fichiers du répertoire courant, mais qui ajoute un numéro devant chaque fichiers, voici mon code:
pwd= « $chemin »
echo $chemin
j=1
for i in *
do
echo « $j)$i »
j=$((j+1))
done
Maintenant, je souhaite, écrire un programme avec diverses fonctions, dont une qui supprime un fichier. Une fois listé, j'écrit le numéro du fichier que je souhaite effacer, et ensuite il supprime celui-ci. Mais quand j'éxécute mon code, il ne le supprime pas, voici mon code:
pwd= « $chemin »
echo $chemin
j=1
for i in *
do
echo « $j)$i »
j=$((j+1))
done
function supprimerFichier
{
echo "quel fichier ?"
read j
rm -f $j
echo "fichier delete"
}
echo " 2- supprimer un fichier"
read choix
case "$choix" in
2) supprimerFichier;;
esac
Si dans mon rm, je met par exemple $fichier, et qu'ensuite une fois éxécuté, je lui indique directement le nom du fichier à supprimé, par exemple, test.txt, là ça fonctionne, mais quand je souhaite récupérer la variable j qui contient le numéro, ça ne fonctionne pas.
C'est plus simple, de mettre directement le numéro que de mettre le nom du fichier.
Dans ta fonction tu demandes à l'utilisateur le numéro du fichier, et tu exécutes rm -f sur le numéro. En gros si l'utilisateur entre '5', ta fonction va essayer de supprimer un fichier qui porte le nom '5'.
Si tu entres le nom du fichier ça marchera très bien.
- Edité par LoupSolitaire 31 janvier 2015 à 18:56:12
Ouais, j'ai bien compris, et c'est pas très compliqué dans le principe : tu peux par exemple garder en mémoire les noms de fichiers et le numbre associé, et retrouver le nom de fichier associé au numéro après que l'utilisateur ait entré le numéro du fichier choisi.
EDIT : Je suppose que c'est un exercice scolaire ? Tu as vu les tableaux (arrays) ? Parce que ça peut aider dans ce cas.
- Edité par LoupSolitaire 31 janvier 2015 à 21:14:40
Non ce n'est pas un exercice scolaire, dans le cadre de mon apprentissage, je dois gérer des fichiers sur un serveur linux, et je dois donc créer un petit shell. Non je n'ai pas vu les tableaux.
Mais, montre moi un début de code quand même pour expliquer un peu mieux ce que tu dis à propos de garder en mémoir les noms, le nombre associé etc...
Sur cette page il y a un bon résumé sur les tableaux en bash. En encore plus résumé le tableau associe un indice (numéro) à une valeur, ce qui me semble coller parfaitement à ce que tu cherches à faire.
Faut que tu apprennes à tester et debugguer en fait je crois. Si tu fais le test tu verras que le code fonctionne pas. N'hésite pas à exécuter juste des morceaux de script pour voir s'ils fonctionnent comme tu l'espère, et d'ajouter des "echo" aux endroits stratégiques pour voir si les variables contiennent bien ce que tu attends.
Au passage, pense à indenter un peu le code aussi.
Je te file le bout de code avec boucle pour créer un tableau avec les noms de fichiers même si je pense pas que ça t'aide réellement :
FICHIERS=()
i=0
for fic in *
do
FICHIERS[$i]=$fic
echo ${FICHIERS[$i]}
i=$((i + 1))
done
Maintenant il existe un truc un peu plus concis qui fait exactement le même travail :
FICHIERS=(*)
Pas besoin de stocker deux variables dans le cas du tableau, le tableau par nature est numéroté (en partant de 0, et pas de 1).
Maintenant pour supprimer le fichier après que l'utilisateur ait entré le nombre, il suffit d'aller chercher la correspondance dans le tableau.
Je suis pas certain de comprendre, manifestement tu n'as aucune base en programmation, on te demande de faire un script shell de gestion de fichiers qui n'a aucun intérêt et qui ressemble fortement à un exercice totalement scolaire dans le cadre d'un apprentissage ?
L'histoire colle pas, et j'ai le sentiment que tu attends juste qu'on te refile la solution sans que tu aies besoin de réfléchir.
Bref, quoi qu'il en soit je pense que ça ne te ferait pas de mal de voir les bases en suivant un petit tuto sur bash et de faire quelques exercices corrigés.
Je vais quand même répondre à ta question de façon plus spécifique : le rm il faut le faire sur le nom de fichier bien entendu, et comme tu as le numéro du fichier fourni par l'utilisateur et un tableau avec les noms de fichiers associés à leur indice (=numéro), tu devrais pouvoir arriver à quelque chose avec tout ça sans qu'on te donne le code tout fait.
Blond, bouclé, toujours le sourire aux lèvres...
Question suppression de fichier
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...