Shell, script CGI
Fermé
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
-
12 mai 2011 à 09:00
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 13 mai 2011 à 10:24
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 13 mai 2011 à 10:24
A voir également:
- Shell, script CGI
- Script vidéo youtube - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Ghost script - Télécharger - Polices de caractères
- Microsoft activation script - Accueil - Windows
- Script bat - Guide
20 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
12 mai 2011 à 09:25
12 mai 2011 à 09:25
Salut,
Déjà dans ton script la variable "$REP_DONNEES" n'est déclarée nulle part ;-((
Ensuite il nous faudrait une vue concrète de l'arborescence de ton dossier (si tu as la commande "tree" d'installer ce serait parfait), afin de mieux cerner la demande et d'adapter au plus juste...
Déjà dans ton script la variable "$REP_DONNEES" n'est déclarée nulle part ;-((
Ensuite il nous faudrait une vue concrète de l'arborescence de ton dossier (si tu as la commande "tree" d'installer ce serait parfait), afin de mieux cerner la demande et d'adapter au plus juste...
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
12 mai 2011 à 09:44
12 mai 2011 à 09:44
La variable $REP_DONNEES est déclarée dans un autre script et exportée. Normalement il n'y a pas de problemes avec elle puisque je l'utilise pour d'autre script et ça marche. En fait j'essaye de créer un serveur de vente entre particulier. Donc au début, quelqu'un s'inscrit. Un repertoire avec pour nom son identifiant est alors crée dans Donnees. Ensuite, s'il sépose une annonce, un repertoire est crée dans le sien, avec pour nom annonce$numAnnonce ($numAnnonce etant un numéro qui augmente d'un à chaque fois). Et dans le répertoire annonce1 par exemple, trois fichier sont creer : titre comprenant le titre de l'annonce, desc comprenant sa description, et prix comprenant son prix.
Au final, dans Donnees, je peux avoir un truc comme ça :
usr1 -> annonce3 -> desc prix titre
usr 2 -> annonce 1 -> desc prix titre
-> annonce 2 -> desc prix titre
usr3 ->
L'utilisateur 2 a posté les 2 première annonces, l'utilisateur 1 la troisieme et l'utilisateur 3 n'en a pas posé. Ce que j'essaye d'écrire, c'est le script rechercherAnnonces. Un utilisateur rentre un mot clé, et le script renvoie toutes les annonces contenant ce mot, sachant qu'il ne faut pas regarder dans le repertoire de l'utilisateur qui fait la recherche.
J'ai fait quelque test, et enfait si je demande d'afficher $i avant le premier if, il m'affiche $REP_DONNEES, dans le for i in "$REP_DONNEES" n'a pas l'air de fonctionner.
Au final, dans Donnees, je peux avoir un truc comme ça :
usr1 -> annonce3 -> desc prix titre
usr 2 -> annonce 1 -> desc prix titre
-> annonce 2 -> desc prix titre
usr3 ->
L'utilisateur 2 a posté les 2 première annonces, l'utilisateur 1 la troisieme et l'utilisateur 3 n'en a pas posé. Ce que j'essaye d'écrire, c'est le script rechercherAnnonces. Un utilisateur rentre un mot clé, et le script renvoie toutes les annonces contenant ce mot, sachant qu'il ne faut pas regarder dans le repertoire de l'utilisateur qui fait la recherche.
J'ai fait quelque test, et enfait si je demande d'afficher $i avant le premier if, il m'affiche $REP_DONNEES, dans le for i in "$REP_DONNEES" n'a pas l'air de fonctionner.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
12 mai 2011 à 10:07
12 mai 2011 à 10:07
Si je comprends bien, le but est de rechercher si une annonce contenant le mot clé existe déjà dans l'arborescence en dehors de celle de l'utilisateur, c'est ça ?
Si je comprends toujours bien, normalement la recherche doit être faite que sur le fichier "desc" (description) ? ou sur le titre aussi ?
Si je comprends toujours bien, normalement la recherche doit être faite que sur le fichier "desc" (description) ? ou sur le titre aussi ?
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
12 mai 2011 à 10:08
12 mai 2011 à 10:08
Oui, c'est ça.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
12 mai 2011 à 10:37
12 mai 2011 à 10:37
Bon normalement avec un simple "grep -r" ou en utilisant "find" ça devrait suffire...
Voici un exemple pour illustrer mes dires. Je cherche le motif "mp3" et j'exclue de la recherche le répertoire de l'utilisateur "titi". Le motif "mp3" est présent dans le fichier "desc" de toto et titi.
;-))
Voici un exemple pour illustrer mes dires. Je cherche le motif "mp3" et j'exclue de la recherche le répertoire de l'utilisateur "titi". Le motif "mp3" est présent dans le fichier "desc" de toto et titi.
$ tree . |-- titi | '-- annonce3 | |-- desc | |-- prix | '-- titre |-- toto | |-- annonce1 | | |-- desc | | |-- prix | | '-- titre | '-- annonce2 | |-- desc | |-- prix | '-- titre '-- tutu 6 directories, 9 files $ find . \( -name 'titi' -prune \) -o \( -name "desc" -type f \) -exec grep -H 'mp3' {} \; ./toto/annonce2/desc:mp3 $ grep -rH 'mp3' * | grep -v 'titi' toto/annonce2/desc:mp3 $
;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
12 mai 2011 à 10:40
12 mai 2011 à 10:40
Merci ^^
Par contre, je ne connais pas trop la commande find. Que signifie -prune ? et - exec ?
Par contre, je ne connais pas trop la commande find. Que signifie -prune ? et - exec ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
12 mai 2011 à 10:46
12 mai 2011 à 10:46
Avec l'option '-prune' on exclue le nom sus-cité dans l'expression entre parenthèse de la recherche, donc à toi d'y mettre le nom de l'utilisateur adéquat.
La commande "-exec" demande à find d'exécuter la commande donnée en paramètre (ici grep), commande à laquelle on passe les arguments trouvés par find via les "{}".
man find pour plus de détails ;-)
La commande "-exec" demande à find d'exécuter la commande donnée en paramètre (ici grep), commande à laquelle on passe les arguments trouvés par find via les "{}".
man find pour plus de détails ;-)
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
12 mai 2011 à 10:47
12 mai 2011 à 10:47
Et l'option -rH de grep sert à quoi ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
12 mai 2011 à 10:47
12 mai 2011 à 10:47
man grep ;-\
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
12 mai 2011 à 10:57
12 mai 2011 à 10:57
Mais il faut que je récupère aussi le titre, la description et le prix pour pouvoir les afficher. La commande grep, elle va me retourner le chemin absolu c'est ça ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
12 mai 2011 à 11:06
12 mai 2011 à 11:06
Oui ;-)
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
12 mai 2011 à 11:10
12 mai 2011 à 11:10
J'ai affecté la sortie de la commande grep à une variable TROUVE. Pour pouvoir récupérer le titre, description et prix, j'aimerais remonter au père annonce qui contient les 3 fichiers, mais je n'y arrive pas. J'ai essayé avec cd ../$TROUVE mais ça me dit cd ../NOM/annonce1/titre:mp3 : No such file or directory.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
12 mai 2011 à 11:33
12 mai 2011 à 11:33
../NOM/annonce1/titre:mp3 :
C'est à cause du motif recherché qui est présent dans le retour de la commande ;-(
Essaye avec "grep -rl" au lieu de "grep -rH".
C'est à cause du motif recherché qui est présent dans le retour de la commande ;-(
Essaye avec "grep -rl" au lieu de "grep -rH".
$ grep -rH 'mp3' * | grep -v 'titi' toto/annonce2/desc:mp3 $ grep -rl 'mp3' * | grep -v 'titi' toto/annonce2/desc
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
12 mai 2011 à 11:40
12 mai 2011 à 11:40
ça me donne le bon truc mais cd ../ ne donne toujours pas le répertoire père donc je ne peux pas accéder aux valeurs.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
12 mai 2011 à 11:44
12 mai 2011 à 11:44
Il ne te donne pas le répertoire père pour la bonne raison que tu n'es pas dans le répertoire fils mais dans le répertoire d'où tu as lancé la commande ;-\
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
12 mai 2011 à 11:47
12 mai 2011 à 11:47
Mais comment faire pour accéder au répertoire fils, si la commande cd ne marche pas ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
12 mai 2011 à 11:58
12 mai 2011 à 11:58
$ pwd # Répertoire courant /home/jp/tmpfs/rep $ A=$(grep -rl 'mp3' * | grep -v 'titi') # On définit la variable $ echo ${A} # La variable contient le nom du le fichier en trop toto/annonce2/desc $ echo ${A%/*} # Avec l'expansion des paramètres on s'en débarrase toto/annonce2 $ echo ${PWD} # La variable d'environnement contient le rep courant /home/jp/tmpfs/rep $ cd ${PWD}/${A%/*} # y'a plus qu'à... $ pwd # On est bien au bon endroit /home/jp/tmpfs/rep/toto/annonce2 $
;-))
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
12 mai 2011 à 12:23
12 mai 2011 à 12:23
Merci, mais je n'ai jamais vu ça en cours donc je ne pense pas qu'il faille faire comme ça. Je vais essayer avec les commandes grep, find et sed.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
Modifié par zipe31 le 12/05/2011 à 12:34
Modifié par zipe31 le 12/05/2011 à 12:34
Et la commande dirname tu l'a vu ?
MiladyThethys
Messages postés
125
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
3 janvier 2013
20
12 mai 2011 à 14:43
12 mai 2011 à 14:43
Salut,
Tu veux une récursivité sur les répertoires de ton répertoire principal ?
Il faut que tu testes si c'est un répertoire
SInon, j'ai pas compris ta question...
Tu veux une récursivité sur les répertoires de ton répertoire principal ?
Il faut que tu testes si c'est un répertoire
if [ -d $ma_variable ] then ./monScript $repertoirecourant/$ma_variable fi
SInon, j'ai pas compris ta question...
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
12 mai 2011 à 23:28
12 mai 2011 à 23:28
Non, je n'ai pas vu la commande dirname non plus. Mais j'ai vu grep et sed.
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
13 mai 2011 à 08:33
13 mai 2011 à 08:33
En fait, j'aimerais pouvoir accéder au repertoire père du chemin que le grep me donne. Si il me donne /usr/annonce/titre, il faudrait que je puisse retourner à annonce pour trouver /usr/annonce/prix et /usr/annonce/desc
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
13 mai 2011 à 08:41
13 mai 2011 à 08:41
Ce que je ne comprends pas c'est que si je fais cd $variable du grp, ça me met Not a directory. On peut pas faire de cd si c'est un fihcier ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
13 mai 2011 à 08:47
13 mai 2011 à 08:47
D'où mon exemple plus haut et la demande pour "dirname" qui est une commande du shell :
$ A=/usr/annonce/titre $ echo ${A%/*} /usr/annonce $ dirname $A /usr/annonce
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
13 mai 2011 à 08:53
13 mai 2011 à 08:53
D'accord, merci, je vais chercher un peu comment marche cette commande.
Sinon, imaginons qu'il y ait plusieurs annonce qui est le mot clef, la commande grep renvoie les chemins séparés d'un espace. Comment je peux les traiter un par un ? J'ai essayé avec un for i in $variable grep mais ça ne marche pas.
Sinon, imaginons qu'il y ait plusieurs annonce qui est le mot clef, la commande grep renvoie les chemins séparés d'un espace. Comment je peux les traiter un par un ? J'ai essayé avec un for i in $variable grep mais ça ne marche pas.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
13 mai 2011 à 09:21
13 mai 2011 à 09:21
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
13 mai 2011 à 09:21
13 mai 2011 à 09:21
C'est bon, je crois avoir reussi.
Merci pour toute l'aide !!!!
Merci pour toute l'aide !!!!
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
13 mai 2011 à 10:02
13 mai 2011 à 10:02
J'ai un nouveau probleme. Je dois ecrire un formulaire avec des boutons radio pour que l'acheteur puisse selectionner l'annonce qu'il veut acheter. Dans mon énoncé, on dit d'affecter 2 valeurs (NOM_VENDEUR et ANNONCE) au même bouton radio en les séparant par un espace.
J'ai donc fait <input type="radio" name="radio" value="'$NOM_VENDEUR $ANNONCE'" />
mais je n'arrive pas à les récupérer dans mon script après.
J'ai donc fait <input type="radio" name="radio" value="'$NOM_VENDEUR $ANNONCE'" />
mais je n'arrive pas à les récupérer dans mon script après.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
13 mai 2011 à 10:09
13 mai 2011 à 10:09
Euh... ce n'est pas la faute aux quotes simples autour de tes variables ???
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
13 mai 2011 à 10:22
13 mai 2011 à 10:22
Non, ça ne fonctionne pas sans non plus. Et je ne comprends, normalement un seul bouton radio ne peut être coché à la fois, non ? Mois je peux en cocher deux et je ne peux pas les décocher
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
13 mai 2011 à 10:24
13 mai 2011 à 10:24
Euh... là par contre on sort de mon domaine de compétences, désolé ;-\
nidjounette
Messages postés
18
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
13 mai 2011
13 mai 2011 à 10:24
13 mai 2011 à 10:24
Ah, j'ai compris pourquoi ça faisait ça. Mais je ne peux tuojours pas récupérer mes variables.