$?VAR在csh中是什么意思?

wan*_*jie 5 shell macros csh

我遇到了用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
Run Code Online (Sandbox Code Playgroud)

请注意这一行:

if ( ! $?LM_LICENSE_FILE ) then
Run Code Online (Sandbox Code Playgroud)

$?做什么$?LM_LICENSE_FILE

LM_LICENSE_FILE是一个shell变量(或更确切地说是宏),我知道该变量$LM_LICENSE_FILE用于检索其值,但是后面跟一个问号$,即$?LM_LICENSE_FILE它的含义是什么?

Kei*_*son 6

$?VAR如果$VAR设置(设置为任何内容,甚至是空字符串),则扩展为 1(真),如果不是,则扩展为0(假)。

这在csh 手册中有记录;按照链接搜索$?,或键入man cshman tcsh

哦,csh 没有宏。