我遇到过用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
,它的含义是什么?
答案 0 :(得分:4)
$?VAR
(对任何东西,甚至是空字符串), $VAR
会扩展为1(true),如果不是,则为0(false)。
csh manual中记录了这一点;点击该链接并搜索$?
,或键入man csh
或man 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