make shell bash

make shell bash - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 03-10-2012 à 11:45:05    

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

Reply

Marsh Posté le 03-10-2012 à 11:45:05   

Reply

Marsh Posté le 04-10-2012 à 08:55:14    

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

Reply

Marsh Posté le 04-10-2012 à 09:01:26    

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 '

Reply

Marsh Posté le 04-10-2012 à 11:54:19    

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.

Reply

Marsh Posté le 04-10-2012 à 16:53:18    

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

Reply

Marsh Posté le 05-10-2012 à 17:06:29    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed