shell - $?VAR 在 csh 中是什么意思?

标签 shell macros csh

我遇到过用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/

相关文章:

clojure - 如何优雅地结合资源和异常处理?

loops - 循环遍历宏的参数

shell - 从 shell 脚本到 cshell 脚本的语法变化是什么?

linux - 在 csh 中重定向 stderr

shell - 如何使用 awk/sed 选择可能多次出现的两个标记模式之间的行

shell - 使用 Python 的自定义(交互式)shell

javascript - 使用 phantomjs 获取 javascript 呈现的 html 源

c++ - "#define FOO(template)"是做什么的?

ruby - 实时重定向 stdout 和 stderr

linux - 在 linux shell 命令中替换输出文件扩展名