Permission denied sur script schell (while)
Résolu
tibobo_77
Messages postés
226
Date d'inscription
Statut
Membre
Dernière intervention
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Pour commencer je tien a préciser que ce n'est qu'un embryon et que je viens de démarrer le shell....
En gros c'est un explorateur de dossier.
Erreur en sortie:
ligne 28 =
Si quelqu'un puvais m'eclairer...
Pour commencer je tien a préciser que ce n'est qu'un embryon et que je viens de démarrer le shell....
En gros c'est un explorateur de dossier.
#!/bin/sh
cpu_name=/home/wwhx/ (c'est un exemple)
confirme="no"
while test "$confirme" != "yes"
do
ls $cpu_name
printf "\nChoisir un repertoire pour la mise a jour\n"
read way_of_file
cpu_name=""$cpu_name""$way_of_file""
printf "%s\n" "${cpu_name}"
printf "Revenir au dossier precedant?\n(yes/no)\n"
read confirme2
if [ "$confirme2" != "yes" ];
then
printf "Est-ce le bon fichier? (no: continue l'exploration des dossiers\n(yes/no)\n"
read confirme
fi
else
cpu_name=echo ${cpu_name%/*/}"/"
confirme= ""
printf "\n\n\n\n"
fi
printf "%s" "${cpu_name}"
done
Erreur en sortie:
./update_server.sh: 28: /home/wwhx/: Permission denied
./update_server.sh: 28: : Permission denied
ligne 28 =
done
Si quelqu'un puvais m'eclairer...
Configuration: Linux Firefox 3.0.14
9 réponses
-
Essaie comme ça (il y avait un "fi" en trop), le script se lance, mais il y a encore des erreurs en fonction des choix ;-((
#!/bin/sh cpu_name="/home/wwhx/" confirme="no" while test "$confirme" != "yes" do ls $cpu_name printf "\nChoisir un repertoire pour la mise a jour\n" read way_of_file cpu_name="${cpu_name}${way_of_file}" printf "%s\n" "${cpu_name}" printf "Revenir au dossier precedant?\n(yes/no)\n" read confirme2 if [ "$confirme2" != "yes" ]; then printf "Est-ce le bon fichier? (no: continue l'exploration des dossiers\n(yes/no)\n" read confirme else cpu_name="${cpu_name%/*/}/" confirme= "" printf "\n\n\n\n" fi printf "%s" "${cpu_name}" done -
Salut,
Affiche le résultat dels -ld /home/wwhx
-
drwxr-xr-x 43 wwhx wwhx4096 2009-10-23 11:34 /home/wwhx [1]+ Done geany update_server.sh
Donc normalement j'ai les droits... -
Salut,
else
cpu_name=echo ${cpu_name%/*/}"/"
La syntaxe est mauvaise :
cpu_name="${cpu_name%/*/}/"
Devrait aller mieux ;-))
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Thanks, ca m'a changé l'erreur :p
./update_server.sh: 28: no: not found
Ps: je suis vraiment désolé, j'ai vraiment du mal avec la synthaxe shell.... pour le moment ^^ -
C'est ce que j'ai aussi...
Tant que je ne passe pas dans le else, il n'y a aucun problème, tout ce déroule comme prévu.
Mais si j'y passe, on me dit ligne "29 : no: not found".
La valeur de "cpu_name" est bien prise en compte (le printf final me donne bien le bon chemin)
Mais le "ls" de ce dernier me fait revenir a la dernière valeur de "cpu_name"
Exemple:
on commence dans "/home/wwhx/"
Je lui dit d'aller dans le bureau.
affichage: "/home/wwhx/bureau/"
Je me suis tromper je ne voulais pas allez la! Il me propose de revenir en arrière, je répond "yes"
affichage: "/home/wwhx/"
./update_server.sh: 25: no: not found
Et le "ls" début m'affiche :
ls /home/wwhx/bureau/
La ligne d'erreur varie, mais renvoie toujours a la ligne du "donne" -
Essaie comme ça :
#!/bin/sh #set -xv cpu_name="/home/wwhx/" confirme="no" while test "$confirme" != "yes" do ls $cpu_name printf "\nChoisir un repertoire pour la mise a jour\n" read way_of_file cpu_name="${cpu_name}${way_of_file}/" printf "%s\n" "${cpu_name}" printf "Revenir au dossier precedent?\n(yes/no)\n" read confirme2 if [ "$confirme2" != "yes" ]; then printf "Est-ce le bon fichier? (no: continue l'exploration des dossiers\n(yes/no)\n" read confirme else cpu_name="${cpu_name%/*/}/" cd ../ confirme="" printf "\n\n\n\n" fi printf "%s\n" "${cpu_name}" done -
Toujours le "no: not found" mais ça marche ^^
Que change le "cd .." (je sais que ça remonte d'un répertoire, mais la je vois vraiment pas)? -
Pour l'erreur tu avais raison,
Par contre reprenant le nom complet du chemin a chaque fois, je ne comprend tjs pas l'utilisation du change directory.