2013-06-07 3 views
2

Je l'ai rencontré ce code écrit dans csh:

if (! $?LM_LICENSE_FILE) then 
    setenv LM_LICENSE_FILE $_LmLicense 
else 
    switch("$LM_LICENSE_FILE") 
    case *${_LmLicense}*: 
     breaksw 
    default: 
     setenv LM_LICENSE_FILE "${_LmLicense}:$LM_LICENSE_FILE" 
    endsw 
endif 

S'il vous plaît noter cette ligne:

if (! $?LM_LICENSE_FILE) then 

Qu'est-$? à faire $?LM_LICENSE_FILE?

LM_LICENSE_FILE est une variable shell (ou macro, plus précisément), et je sais que $LM_LICENSE_FILE est utilisé pour récupérer sa valeur, mais un point d'interrogation de fuite suivant $, qui est $?LM_LICENSE_FILE, quelle est sa signification?

Répondre

3

$?VAR s'étend à 1 (vrai) si $VAR est défini (à tout, même la chaîne vide), 0 (faux) si ce n'est pas le cas. Ce document est documenté dans csh manual; suivez le lien et recherchez $?, ou tapez man csh ou man tcsh.

Oh, et csh n'a pas de macros.