$?VAR在csh中意味着什么?

时间:2013-06-07 03:55:48

标签: 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

请注意这一行:

if ( ! $?LM_LICENSE_FILE ) then

$?$?LM_LICENSE_FILE中做了什么?

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

2 个答案:

答案 0 :(得分:4)

如果设置$?VAR(对任何东西,甚至是空字符串),

$VAR会扩展为1(true),如果不是,则为0(false)。

csh manual中记录了这一点;点击该链接并搜索$?,或键入man cshman tcsh

哦,csh没有宏。

答案 1 :(得分:0)

if ( ! $?LM_LICENSE_FILE ) then
表示if ( LM_LICENSE_FILE has not been assigned with any value.) , then ...

另一方面,if ( $?LM_LICENSE_FILE ) then
表示if ( LM_LICENSE_FILE has been defined or assigned.) then