【问题标题】:What does $?VAR mean in csh?$?VAR 在 csh 中是什么意思?
【发布时间】:2013-06-07 03:55:47
【问题描述】:

我遇到过这段用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,什么是是什么意思?

【问题讨论】:

    标签: shell macros csh


    【解决方案1】:

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

    这在csh manual中有记录;点击链接并搜索$?,或输入man cshman tcsh

    哦,而且 csh 没有宏。

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

        猜你喜欢
        • 2011-06-20
        • 2014-01-06
        • 1970-01-01
        • 1970-01-01
        • 2011-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多