Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2646 connectés 

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

make shell bash

n°1320604
puisquetur​epondspas
Posté le 03-10-2012 à 11:45:05  profilanswer
 

debutant en shell Je ne comprends pas ce que signifie ce code  

Citation :


 
MAKE="`which gmake 2> /dev/null`"
if test -x "$MAKE"; then :; else
    MAKE="`which makebash-v
 
fi
 


En faisant un echo "$MAKE" , la variable est null ou vide. ce programme est lancé depuis un bash (GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu)) de mon chroot debian4 (etch)
 
Merci de votre aide

mood
Publicité
Posté le 03-10-2012 à 11:45:05  profilanswer
 

n°1320655
puisquetur​epondspas
Posté le 04-10-2012 à 08:55:14  profilanswer
 

il verifie que gmake existe s il existe pas met la valeur null je crois

n°1320656
o'gure
Modérateur
Multi grognon de B_L
Posté le 04-10-2012 à 09:01:26  profilanswer
 

La première ligne : récupère le chemin d'accès à la commande gmake et le  colle dans la variable MAKE. Les erreurs potentielles sont ignorées grace à "2> /dev/null"
 
le if vérifie s'il y a quelque chose dans la variable MAKE, si y a rien, alors il récupère le chemin de makebash-v. A mon avis, ton code ne marche pas, il y a des erreurs de " et de '

n°1320709
Neji Hyuga
:grut:
Posté le 04-10-2012 à 11:54:19  profilanswer
 

Il ne marche pas ce script, comme le dit O'gure, une chaine de caractères n'est pas correctement fermée, pareil pour l'exécution de which makebash.
 
Le "then" sans rien derrière est inutile.
 
Ce serait mieux comme ça :

Code :
  1. MAKE="$(which gmake 2>/dev/null)"
  2. [ ! -n "${MAKE}" ] && MAKE="$(which makebash-v)"


 
Et si ta variable $MAKE est vide, c'est parce que `which makebash-v` ne trouve rien du tout et renvoi un message sur la sortie d'erreur et rien sur la sortie standard.

n°1320754
puisquetur​epondspas
Posté le 04-10-2012 à 16:53:18  profilanswer
 

d'accord merci beaucoup
C'est moi en recopieant qui n'ai pas fermer les ' et "

n°1320826
Nukolau
Posté le 05-10-2012 à 17:06:29  profilanswer
 

Attention le
test -x "$MAKE"
ne teste pas si la variable est remplie, mais que le contenu existe physiquement et est exécutable. je trouve ca très moche, car si la vraible est vide, je ne garantie pas le fonctionnement du script :/ En ce qui me concerne, j'écrirais donc :

 
Code :
  1. MAKE="$(which gmake 2>/dev/null)"
  2. [ -z "${MAKE}" -o ! -x "${MAKE}" ] && MAKE="$(which makebash-v)"
  3. [ -z "${MAKE}" -o ! -x "${MAKE}" ] && exit 1


Message édité par Nukolau le 05-10-2012 à 17:06:57

Aller à :
Ajouter une réponse
 

Sujets relatifs
Cacti : graph du résultat d'un script shell d'un hôte distantAide sur script bash
Réception donnée hexadécimale sur port serie avec BashScript Bash pour récuperer seulement l'adresse IP
(résolu) test sur un entier en bash (très simple)Tableau contenant des variables - Script bash
[Shell] Comparaison de dates entre deux fichiersshell : ln avec renommage
soucis avec make-kpkg (debian lenny)Script shell et affichage "bufferisé"
Plus de sujets relatifs à : make shell bash


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR