2009-09-22 13 views
0

Je dois comprendre la ligne de code suivante:ligne de code bash à partir du fichier .configure

BIN_DIR=`grep BIN_DIR= $SMLCM | head -1` 

$SMLCH contient un chemin

Voilà ce que je compris à ce jour:

  • grep produira une ou plusieurs chaînes, chemins possibles. Que fait grep avec BIN_DIR=?

  • les chemins sont passés à la tête et tous les fichiers dans les chemins seront utilisés pour extraire leur première ligne

  • quelque chose est évalué (quoi exactement?) Et stockés dans BIN_DIR

meilleur Cordialement,

Simon

+0

Cela ne devrait pas être un wiki communautaire – chaos

+0

OK, mais il n'est pas possible d'annuler – SimonSalman

Répondre

1

Ceci trouvera tous les occureneces de la chaîne « BIN_DIR = » dans le fichier spécifié dans la variable $ SMLCM et prenez seulement la première ligne de cette sortie et l'affecter à BIN_DIR.

Notez que cela ne fonctionne pas comme vous le souhaitez depuis ce qui est s'assiggned à BIN_DIR est une chaîne comme « BIN_DIR = bla » qui est-il peut avoir le même effet que les éléments suivants:

BIN_DIR = » BIN_DIR = bla »

1
  • gr ep correspondra à chaque ligne contenant BIN_DIR = à l'intérieur du contenu du fichier nommé par le var $ SMLCM
  • tête prendra la première ligne
  • cette ligne (le résultat des commandes à l'intérieur de l'arrière ticks) est réaffecté à BIN_DIR
0

Ce extraira ne la valeur de $BIN_DIR la première fois qu'il apparaît dans le fichier pointé par $SMLCM et l'affecter à la $BIN_DIR variable dans le script actuel:

BIN_DIR=$(sed -n 's/^BIN_DIR=\(.*\)$/\1/p' $SMLCM | head -n 1) 
  • sed -n: exécuter l'éditeur de flux et ne pas imprimer chaque ligne telle qu'elle apparaît
  • s/: remplacer
  • ^BIN_DIR=: une ligne qui commence ("^") avec le texte "BIN_DIR ="
  • \(.*\)$: et se termine ("$") avec un groupe ("\ (\)") de zéro ou plus ("*") des caractères (".«)
  • /: remplacer ce match avec
  • \1: le contenu du premier (dans ce cas, seul) groupe
  • /p: terminer la substitution et imprimer les résultats
Questions connexes