我遇到了用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
它的含义是什么?
$?VAR
如果$VAR
设置(设置为任何内容,甚至是空字符串),则扩展为 1(真),如果不是,则扩展为0(假)。
这在csh 手册中有记录;按照链接搜索$?
,或键入man csh
或man tcsh
。
哦,csh 没有宏。