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

最佳答案

如果将$?VAR设置为(任何值,甚至是空字符串),那么$VAR扩展为1(真),如果未设置,则扩展为0(假)。

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

哦,而且csh没有宏。

关于shell - $?VAR在csh中是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16975968/

10-13 05:30