6

我遇到过用 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,它的含义是什么?

4

2 回答 2

6

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

这记录在csh 手册中;点击链接并搜索$?,或键入man cshman tcsh

哦,csh 没有宏。

于 2013-06-07T05:29:54.453 回答
1

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

于 2018-07-01T19:01:11.413 回答