Permission denied sur script schell (while)

Résolu/Fermé
tibobo_77 Messages postés 1357 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 27 juillet 2012 - 23 oct. 2009 à 11:19
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 23 oct. 2009 à 15:39
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.

#!/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...

9 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
23 oct. 2009 à 13:54
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
1
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
23 oct. 2009 à 11:36
Salut,

Affiche le résultat de
ls -ld /home/wwhx
0
tibobo_77 Messages postés 1357 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 27 juillet 2012 263
23 oct. 2009 à 13:21
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...
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
23 oct. 2009 à 13:36
Salut,

else
cpu_name=echo ${cpu_name%/*/}"/"


La syntaxe est mauvaise :

cpu_name="${cpu_name%/*/}/"

Devrait aller mieux ;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tibobo_77 Messages postés 1357 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 27 juillet 2012 263
23 oct. 2009 à 13:45
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 ^^
0
tibobo_77 Messages postés 1357 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 27 juillet 2012 263
23 oct. 2009 à 14:10
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"
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
23 oct. 2009 à 14:37
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
0
tibobo_77 Messages postés 1357 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 27 juillet 2012 263
23 oct. 2009 à 15:13
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)?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
23 oct. 2009 à 15:21
Chez moi je n'ai aucune erreur ;-\

T'es sûr que tu ne fais pas d'erreur dans le choix des répertoires ? Rajoutes l'option "-p" à la commande "ls" (ls -p)...

Que change le "cd .."
Ben tu remontes d'un répertoire sans te soucier de savoir où tu es...
0
tibobo_77 Messages postés 1357 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 27 juillet 2012 263
23 oct. 2009 à 15:34
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.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
23 oct. 2009 à 15:39
C'est clair qu'elle ne sert à rien, je l'avais mis pour mes tests en commentant la ligne précédente, et je l'ai laissée à la fin quand tout marchait bien, c'est donc un oubli, tu peux la virer ,-))
0